GraphQL para Swift: Apollo iOS — cliente para iOS y macOS

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Apollo iOS: Potente cliente GraphQL para aplicaciones Swift



Apollo iOS es una biblioteca moderna y tipográficamente segura para trabajar con API GraphQL en las plataformas de Apple: iOS, macOS, tvOS y watchOS. Desarrollada por la empresa Apollo GraphQL, proporciona a los desarrolladores herramientas convenientes para ejecutar consultas, mutaciones y suscripciones, generando automáticamente código Swift fuertemente tipado basado en su esquema GraphQL.



La biblioteca es ideal para crear aplicaciones móviles y de escritorio modernas que requieren un manejo flexible de datos, almacenamiento en caché y alto rendimiento. Apollo iOS elimina la necesidad de analizar JSON manualmente y garantiza la seguridad total de tipos en tiempo de compilación.



Características principales

  • Generación automática de código — basada en archivos .graphql y el esquema del servidor, se crean modelos de datos, consultas y mutaciones tipificados.
  • Caché normalizado — la caché incorporada actualiza automáticamente la interfaz de usuario cuando los datos cambian, evitando la duplicación de objetos.
  • Soporte para suscripciones a través de WebSocket — actualizaciones en tiempo real para chats, notificaciones y otros datos dinámicos.
  • Integración con SwiftUI y Combine — Publishers asíncronos nativos y ObservableObject para programación reactiva.
  • Multihilo — todas las solicitudes de red se ejecutan en segundo plano, dejando el hilo principal libre para la interfaz de usuario.
  • Soporte para carga de archivos — trabajo con solicitudes multipart para enviar imágenes y documentos.


Instalación a través de Swift Package Manager

Agregue Apollo iOS a su proyecto a través de Xcode o Package.swift:

// Package.swiftdependencies: [    .package(url: "https://github.com/apollographql/apollo-ios.git",              from: "1.0.0")]


Ejemplo: configuración del cliente y ejecución de una consulta

Creemos una instancia del cliente y ejecutemos una consulta GraphQL simple para obtener una lista de usuarios:

import Apollo

// 1. Creamos el clientelet url = URL(string: "https://api.example.com/graphql")!let store = ApolloStore()let client = ApolloClient(url: url, store: store)

// 2. Definimos la consulta (archivo Users.graphql)// query GetUsers { users { id name email } }

// 3. Ejecutamos la consultaclient.fetch(query: GetUsersQuery()) { result in switch result { case .success(let graphQLResult): if let users = graphQLResult.data?.users { for user in users { print("\\(user.name) — \\(user.email)") } } case .failure(let error): print("Error: \\(error.localizedDescription)") }}


Trabajo con mutaciones (modificación de datos)

Ejemplo de mutación para crear un nuevo usuario:

// mutation CreateUser($name: String!, $email: String!) {//   createUser(name: $name, email: $email) { id name email }// }

let mutation = CreateUserMutation(name: "Iván Petrov", email: "ivan@example.com")

client.perform(mutation: mutation) { result in switch result { case .success(let graphQLResult): if let newUser = graphQLResult.data?.createUser { print("Usuario creado: \\(newUser.id)") } case .failure(let error): print("Error de creación: \\(error)") }}


Suscripciones (actualizaciones en tiempo real)

Para obtener datos en tiempo real, use suscripciones. Se requiere transporte WebSocket:

import ApolloWebSocket

let webSocketTransport = WebSocketTransport( request: URLRequest(url: URL(string: "wss://api.example.com/graphql")!))let store = ApolloStore()let client = ApolloClient(networkTransport: webSocketTransport, store: store)

// subscription OnUserAdded { userAdded { id name } }let subscription =

Recommendations