iOS
Integrazione Apollo GraphQL iOS con Swift in Xcode
22 min
introduzione in questa sezione imparerai come installare il client apollo ios nel tuo progetto swift e come interrogare i dati da back4app utilizzandolo requisiti per completare questo quickstart, hai bisogno di xcode un'app creata su back4app segui il https //www back4app com/docs/get started/new parse app per imparare come creare un'app parse su back4app una classe con alcuni dati memorizzati (in modo da poterli recuperare) 1 aggiungere apollo client al tuo progetto xcode il modo più semplice per integrare il client apollo ios è utilizzare https //cocoapods org/ per integrarlo, segui questi passaggi crea il tuo progetto xcode e nella stessa cartella del tuo file xcodeproj, crea un nuovo file chiamato podfile modifica il file podfile e aggiungi il seguente codice, cambiando la stringa yourprojectnamehere con il nome del tuo progetto \# uncomment the next line to define a global platform for your project platform \ ios, '12 0' target 'yourprojectnamehere' do \# comment the next line if you're not using swift and don't want to use dynamic frameworks use frameworks! \# pods for conferenceplanner pod 'apollo' end salva il file e apri un terminale vai in quella cartella e digita pod install quando l'installazione è completata, dovresti avere un nuovo file con il formato xcworkspace apri quel file con xcode 2 recupera i tuoi schemi hai bisogno di un file chiamato schema json contenente gli schemi per il tuo endpoint graphql ci sono due modi per recuperare il tuo schema completo utilizzando la console graphql di back4app utilizzando apollo discuteremo entrambi scegli quello che ti piace di più 2 1 recupera i tuoi schemi con la console graphql di back4app vai alla tua console graphql per l'app da cui vuoi recuperare lo schema e, a destra sotto la scheda schema, clicca sul pulsante download 2 2 recupera i tuoi schemi con apollo se preferisci utilizzare apollo, prima devi installare la versione desktop digitando npm install g apollo poi, esegui il seguente comando sostituendo i valori per le intestazioni con il tuo appid e masterkey apollo client endpoint= https //parseapi back4app com/graphql header="x parse application id yourappidhere" header="x parse master key yourmasterkeyhere" questo genererà un file aschema json come output 3 aggiungi il tuo file schema json al progetto aggiungi il file schema json che hai scaricato o recuperato al tuo progetto nella directory principale questa è la stessa cartella in cui si trova il tuo file appdelegate swift 4 crea i tuoi file graphql ora puoi creare i tuoi file graphql con i tuoi file e mutazioni questi file devono avere l'estensione graphql e contenere almeno una query o mutazione affinché apollo possa generare il codice swift una convenzione utile è quella di collocare query, mutazioni o frammenti con il codice swift che li utilizza creando \<name> graphql accanto a \<name> swift se non hai file graphql preesistenti nel tuo albero dei file, crea una query molto semplice e aggiungila a un file graphql nel tuo albero dei file in modo che quando esegui il passaggio di generazione del codice, trovi effettivamente qualcosa se non lo fai, riceverai l'errore nessuna operazione o frammenti trovati per generare codice ecco una semplice query che come esempio, restituisce gli utenti di parse 1 query findallusers{ 2 objects{ 3 find user{ 4 count 5 results{ 6 username 7 } 8 } 9 } 10 } aggiungi quel file alla tua directory target allo stesso livello del tuo file schema json 5 aggiungi un passaggio di generazione del codice puoi invocare apollo come parte del processo di build di xcode, che recupererà e aggiornerà automaticamente il file schema json in modo che le tue classi riflettano sempre eventuali modifiche che apporti chiamando lo script wrapper check and run apollo cli sh lo script wrapper controlla se la versione di apollo installata sul tuo sistema è compatibile con la versione del framework nel tuo progetto se non controlli questo, potresti generare codice che è incompatibile con il codice di runtime nel framework i passaggi sono nella scheda delle impostazioni delle fasi di build del tuo target applicativo, fai clic sull'icona + e scegli nuova fase di script di esecuzione nello script di esecuzione creato, cambia il suo nome in genera api apollo graphql trascina questo nuovo script di esecuzione appena sopra compila sorgenti nella tua lista di fasi di build in modo che venga eseguito prima che il tuo codice venga compilato aggiungi quanto segue allo script di esecuzione script path="${pods root}/apollo/scripts" cd "${srcroot}/${target name}" "${script path}"/check and run apollo cli sh codegen target=swift includes= / / graphql localschemafile="schema json" api swift se stai usando xcode 11 beta, aggiungi questo script invece \# vai alla radice di build e torna su dove spm tiene il framework apollo ios controllato cd "${build root}" cd " / /sourcepackages/checkouts/apollo ios/scripts" apollo script path="$(pwd)" if \[ z "${apollo script path}" ]; then echo "errore impossibile trovare lo script cli nei tuoi pacchetti spm controllati; assicurati di aggiungere il framework al tuo progetto " exit 1 fi cd "${srcroot}/${target name}" "${apollo script path}"/check and run apollo cli sh codegen target=swift includes= / / graphql localschemafile="schema json" api swift 6 compila e aggiungi il tuo file api al target compila il tuo progetto e un file chiamato api swift dovrebbe essere creato nella directory del tuo target trascina il file api swift generato nel tuo target e assicurati di deselezionare la casella "copia file se necessario" assicurati di aver selezionato tutti i target in cui il file api deve essere incluso 7 configura il client ora nel tuo viewcontroller swift, crea la tua configurazione apollo e modifica i valori di appid e clientkey 1 let apollo apolloclient = { 2 let configuration = urlsessionconfiguration default 3 configuration httpadditionalheaders = \[ 4 "x parse application id" "yourappidhere", 5 "x parse client key" "yourclientkeyhere" 6 ] 7 8 let url = url(string "https //parseapi back4app com/graphql")! 9 10 return apolloclient( 11 networktransport httpnetworktransport( 12 url url, 13 configuration configuration 14 ) 15 ) 16 }() 8 configura il client nel tuo viewdidload, chiama la tua query graphql dal client apollo 1 apollo fetch(query findallusersquery()) { result in 2 guard let data = try? result get() data else { return } 3 print(data objects? finduser results\[0] username) 4 } se hai utenti nella tua classe user, il primo (indice 0) dovrebbe essere recuperato passaggio facoltativo ottieni evidenziazione della sintassi puoi avere l'evidenziazione della sintassi graphql su xcode se lo desideri per ottenere ciò clona il https //github com/apollostack/xcode apollo sul tuo computer chiudi xcode se è attualmente in esecuzione potresti dover creare queste cartelle all'interno di /library/developer/xcode mkdir /library/developer/xcode/plug ins /library/developer/xcode/specifications 4\ copia graphql ideplugin in /library/developer/xcode/plug ins cp r graphql ideplugin /library/developer/xcode/plug ins 5\ copia graphql xclangspec in /library/developer/xcode/specifications cp r graphql xclangspec /library/developer/xcode/specifications potresti ricevere un avviso la prima volta che avvii xcode dopo aver installato questi componenti aggiuntivi una volta che accetti di caricare il plugin, non vedrai più questo avviso