# Swift en Maguyva: grafos de código para iOS y macOS

Canonical source: https://maguyva.ai/es/languages/swift

License: text under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/); code samples under [MIT-0](https://opensource.org/license/mit-0); the Maguyva name, logos, brand assets and other code are not covered. Details: [maguyva.ai/license](https://maguyva.ai/license).

Maguyva admite Swift con AST, símbolos y grafo, para que los agentes de IA sigan protocolos, extensiones, inicializadores y observadores en código iOS y macOS.

## Resumen de soporte

- Nivel: Soporte de AST y símbolos
- Programación
- Extensiones: .swift
- Análisis AST real para búsqueda con reconocimiento de sintaxis y contexto estructural.
- Los símbolos con nombre alimentan la búsqueda semántica y las referencias cruzadas. La navegación por grafo está disponible cuando la extracción de relaciones está habilitada.
- Este lenguaje aporta símbolos y relaciones a la búsqueda basada en grafos; los tipos de arista disponibles varían según sus construcciones nativas.
- Están disponibles tanto el análisis AST como la extracción de símbolos.

## Mejor uso

- Equipos de iOS y macOS con grandes targets de app y paquetes Swift compartidos.
- Bases de código construidas en torno a protocolos y extensiones, donde el comportamiento de un tipo se reparte en muchos archivos.
- Flujos de trabajo con agentes que necesitan análisis de impacto antes de cambiar un modelo, servicio o protocolo compartido.

## Flujos de trabajo del agente

- Encontrar todos los tipos que se ajustan a un protocolo antes de cambiar uno de sus requisitos.
- Rastrear los llamadores de un método de servicio entre ViewModels, coordinadores y paquetes.
- Localizar inicializadores, propiedades calculadas y observadores `didSet` que tocan un estado.

## Por qué Swift necesita más que una búsqueda de archivos

Swift reparte un mismo tipo en muchos lugares. Un struct se declara en un archivo, obtiene comportamiento de extensiones en otros tres y se ajusta a protocolos definidos en un paquete. Los cambios de estado se esconden en propiedades calculadas y en observadores `willSet` / `didSet`. Un agente que lee un archivo a la vez se pierde la mayor parte.

Maguyva indexa esa estructura para que un agente vea juntos los miembros, las conformidades y los llamadores de un tipo.

## Qué extrae Maguyva en Swift

Maguyva cubre `.swift`. Los símbolos invocables incluyen funciones, `init` y `deinit`, subscripts, getters y setters de propiedades calculadas, y observadores `willSet` / `didSet`, así que el código que cambia el estado se puede buscar como símbolo en lugar de quedar enterrado en el cuerpo de las propiedades.

Los miembros declarados dentro de structs, enums, protocolos y extensiones se califican con su tipo propietario (por ejemplo `CartStore.add`), y los miembros añadidos en una extensión se atribuyen al tipo extendido. A los nombres de definición se les quitan los parámetros genéricos, las listas de conformidad a protocolos y los sufijos `?` / `!`, de modo que las búsquedas usan el nombre simple. Las llamadas conservan `self.` y la calificación de clase, y los trailing closures cuentan en la aridad de la llamada.

El grafo registra llamadas, conformidad a protocolos, herencia, sobrescrituras, instanciación, atributos, referencias de tipo, lecturas y escrituras, y aristas de `throw`.

## Ejemplos de prompts para agentes

- "¿Qué tipos se ajustan a `PaymentProvider` y dónde se crea cada uno?" (`dependency_search`)
- "¿Quién llama a `CartStore.add` y desde qué vistas?" (`find_symbol` y luego `dependency_search` incoming)
- "Explica cómo llega una notificación push a la pantalla de la bandeja de entrada." (`get_task_context`)

## Limitaciones conocidas

- Solo se asigna el código fuente `.swift`. Los archivos Storyboard y XIB no están en la lista de extensiones, así que las conexiones de Interface Builder quedan fuera del grafo.
- Las llamadas de la biblioteca estándar y de Foundation como `print`, `debugPrint`, `NSLog` y las aserciones se filtran de las relaciones, así que no son aristas del grafo. Usa `text_pattern_search` para encontrarlas.

## Próximos pasos

Conecta un repositorio con el [inicio rápido](/es/docs/quickstart) y luego revisa la matriz de compatibilidad en la [página de compatibilidad](/es/docs/compatibility). Si publicas el mismo producto en Android, lee la [guía de Kotlin](/es/languages/kotlin).

## Detalles del motor

- Los símbolos invocables incluyen funciones, `init`, `deinit`, subscripts, getters y setters de propiedades calculadas, y observadores `willSet` / `didSet`.
- Los miembros de structs, enums, protocolos y extensiones se califican con su tipo propietario, como `CartStore.add`.
- A los nombres de definición se les quitan los parámetros genéricos, las listas de conformidad a protocolos y los sufijos `?` / `!`, y las llamadas conservan `self.` y la calificación de clase.

## Puntos de entrada MCP útiles

- `find_symbol`: Úsalo con el nombre de un tipo, protocolo o método cuando necesites la definición y las referencias.
- `dependency_search`: Úsalo sobre un protocolo para encontrar los tipos que se ajustan a él, o en incoming sobre un método para encontrar sus llamadores.
- `get_task_context`: Úsalo para prompts como "explica cómo llega una notificación push a la pantalla de la bandeja de entrada".
