iOS
Integrando Apollo Client en Swift para Consultas GraphQL
22 min
introducción en esta sección aprenderás cómo instalar el cliente apollo para ios en tu proyecto de swift y consultar datos de back4app usando este requisitos previos para completar este inicio rápido, necesitas xcode una aplicación creada en back4app sigue el tutorial de nueva aplicación parse para aprender cómo crear una aplicación parse en back4app una clase con algunos datos almacenados (para que puedas recuperarlos) 1 integrando el cliente apollo en tu proyecto xcode la forma más fácil de integrar el cliente apollo para ios es usando cocoapods https //cocoapods org/ para integrarlo, sigue estos pasos crea tu proyecto xcode y en la misma carpeta de tu archivo xcodeproj, crea un nuevo archivo llamado podfile edita el archivo podfile y agrega el siguiente código, cambiando la cadena yourprojectnamehere por el nombre de tu proyecto \# 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 guarda el archivo y abre una terminal ve a esa carpeta y escribe cuando la instalación termine, deberías tener un nuevo archivo con el formato xcworkspace abre ese archivo con xcode 2 recupera tus esquemas necesitas un archivo llamado schema json que contenga los esquemas para tu punto final de graphql hay dos formas de recuperar tu esquema completo usando la consola graphql de back4app usando apollo discutiremos ambos elige el que más te guste 2 1 recupera tus esquemas con la consola graphql de back4app ve a tu consola graphql para la app de la que deseas recuperar el esquema y, en la parte derecha bajo la pestaña esquema, haz clic en el botón descargar 2 2 recupera tus esquemas con apollo si prefieres usar apollo, primero debes instalar la versión de escritorio escribiendo luego, ejecuta el siguiente comando reemplazando los valores de los encabezados con tu appid y masterkey esto generará un archivo aschema json como salida 3 agrega tu archivo schema json al proyecto agrega el archivo schema json que descargaste o recuperaste a tu proyecto en el directorio raíz esta es la misma carpeta donde se encuentra tu archivo appdelegate swift 4 crea tus archivos graphql ahora puedes crear tus archivos graphql con tus archivos y mutaciones esos archivos deben tener la extensión graphql y contener al menos una consulta o mutación para que apollo pueda crear el código swift a partir de ellos una convención útil es colocar consultas, mutaciones o fragmentos junto con el código swift que los utiliza creando \<nombre> graphql junto a \<nombre> swift si no tienes archivos graphql preexistentes en tu árbol de archivos, crea una consulta muy simple y agrégala a un archivo graphql en tu árbol de archivos para que cuando ejecutes el paso de generación de código, realmente encuentre algo si no lo haces, recibirás el error no se encontraron operaciones o fragmentos para generar código aquí hay una consulta simple que como ejemplo, que devuelve usuarios de parse 1 query findallusers{ 2 objects{ 3 find user{ 4 count 5 results{ 6 username 7 } 8 } 9 } 10 } agrega ese archivo a tu directorio de destino al mismo nivel que tu archivo schema json 5 agrega un paso de generación de código puedes invocar apollo como parte del proceso de construcción de xcode, que recuperará y actualizará el archivo schema json automáticamente para que tus clases siempre reflejen cualquier cambio que realices al llamar al script envoltorio check and run apollo cli sh el envoltorio verifica si la versión de apollo instalada en tu sistema es compatible con la versión del marco en tu proyecto si no verificas eso, podrías generar código que sea incompatible con el código de tiempo de ejecución en el marco los pasos son en la pestaña de configuración de fases de construcción de tu objetivo de aplicación, haz clic en el ícono + y elige nueva fase de script de ejecución en el script de ejecución creado, cambia su nombre a generar api graphql de apollo arrastra este nuevo script de ejecución justo encima de compilar fuentes en tu lista de fases de construcción para que se ejecute antes de que tu código sea compilado agrega lo siguiente al script de ejecución si estás usando xcode 11 beta, agrega este script en su lugar 6 compila y agrega tu archivo api al objetivo compila tu proyecto y se debería crear un archivo llamado api swift en el directorio de tu objetivo arrastra el archivo api swift generado a tu objetivo y asegúrate de desmarcar la casilla "copiar archivos si es necesario" asegúrate de haber marcado todos los objetivos en los que se necesita incluir el archivo api 7 configurar el cliente ahora en tu viewcontroller swift, crea tu configuración de apollo y cambia los valores de appid y 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 configurar el cliente en tu viewdidload, llama a tu consulta graphql desde el cliente 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 } si tienes algún usuario en tu clase user, el primero (índice 0) debería ser recuperado paso opcional obtener resaltado de sintaxis puedes tener resaltado de sintaxis de graphql en xcode si lo deseas para lograr eso clona el repositorio xcode apollo https //github com/apollostack/xcode apollo en tu computadora cierra xcode si está ejecutándose actualmente es posible que necesites crear estas carpetas dentro de /library/developer/xcode 4\ copia graphql ideplugin a /library/developer/xcode/plug ins 5\ copia graphql xclangspec a /library/developer/xcode/specifications es posible que recibas una advertencia la primera vez que inicies xcode después de instalar estos complementos una vez que aceptes cargar el complemento, ya no verás esta advertencia