# Swift in Maguyva: grafi del codice per iOS e macOS

Canonical source: https://maguyva.ai/it/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 supporta Swift con AST, simboli e grafo, così gli agenti IA seguono protocolli, extension, inizializzatori e observer nel codice iOS e macOS.

## Istantanea del supporto

- Livello: Supporto AST e simboli
- Programmazione
- Estensioni: .swift
- Analisi AST reale per ricerca sintattica e contesto strutturale.
- I simboli nominati alimentano la ricerca semantica e i riferimenti incrociati. La navigazione del grafo è disponibile quando è abilitata l’estrazione delle relazioni.
- Questo linguaggio contribuisce con simboli e relazioni alla ricerca basata sul grafo; i tipi di arco supportati variano in base ai suoi costrutti nativi.
- Sono disponibili sia l’analisi AST sia l’estrazione dei simboli.

## Il più adatto per

- Team iOS e macOS con grandi target di app e package Swift condivisi.
- Basi di codice costruite attorno a protocolli ed extension, in cui il comportamento di un tipo è sparso su molti file.
- Workflow con agenti che richiedono un'analisi d'impatto prima di modificare un modello, un servizio o un protocollo condiviso.

## Workflow degli agenti

- Trovare tutti i tipi conformi a un protocollo prima di cambiarne un requisito.
- Tracciare i chiamanti di un metodo di servizio tra ViewModel, coordinator e package.
- Individuare inizializzatori, proprietà calcolate e observer `didSet` che toccano uno stato.

## Perché Swift richiede più di una ricerca nei file

Swift distribuisce un tipo in molti punti. Una struct viene dichiarata in un file, riceve comportamento da extension in altri tre e si conforma a protocolli definiti in un package. I cambi di stato si nascondono in proprietà calcolate e observer `willSet` / `didSet`. Un agente che legge un file alla volta perde gran parte di tutto questo.

Maguyva indicizza questa struttura, così un agente vede insieme i membri, le conformità e i chiamanti di un tipo.

## Cosa estrae Maguyva in Swift

Maguyva copre `.swift`. I simboli invocabili includono funzioni, `init` e `deinit`, subscript, getter e setter delle proprietà calcolate e observer `willSet` / `didSet`, così il codice che modifica lo stato è ricercabile come simbolo invece di restare sepolto nei corpi delle proprietà.

I membri dichiarati in struct, enum, protocolli ed extension sono qualificati dal tipo proprietario (ad esempio `CartStore.add`), e i membri aggiunti in un'extension sono attribuiti al tipo esteso. Dai nomi delle definizioni vengono rimossi parametri generici, liste di conformità ai protocolli e suffissi `?` / `!`, così le ricerche usano il nome semplice. Le chiamate mantengono `self.` e la qualificazione di classe, e le trailing closure contano nell'arità della chiamata.

Il grafo registra chiamate, conformità ai protocolli, ereditarietà, override, istanziazione, attributi, riferimenti di tipo, letture e scritture, e archi `throw`.

## Esempi di prompt per agenti

- "Quali tipi sono conformi a `PaymentProvider` e dove viene creato ciascuno?" (`dependency_search`)
- "Chi chiama `CartStore.add` e da quali view?" (`find_symbol`, poi `dependency_search` incoming)
- "Spiega come una notifica push arriva alla schermata della posta in arrivo." (`get_task_context`)

## Limiti noti

- Solo i sorgenti `.swift` sono associati. I file Storyboard e XIB non sono nell'elenco delle estensioni, quindi i collegamenti di Interface Builder restano fuori dal grafo.
- Le chiamate della libreria standard e di Foundation come `print`, `debugPrint`, `NSLog` e le asserzioni vengono filtrate dalle relazioni, quindi non sono archi del grafo. Usa `text_pattern_search` per trovarle.

## Prossimi passi

Collega un repository con la [guida rapida](/it/docs/quickstart), poi consulta la matrice di supporto nella [pagina di compatibilità](/it/docs/compatibility). Se distribuisci lo stesso prodotto anche su Android, leggi la [guida a Kotlin](/it/languages/kotlin).

## Dettagli del motore

- I simboli invocabili includono funzioni, `init`, `deinit`, subscript, getter e setter delle proprietà calcolate e observer `willSet` / `didSet`.
- I membri di struct, enum, protocolli ed extension sono qualificati dal tipo proprietario, come `CartStore.add`.
- Parametri generici, liste di conformità ai protocolli e suffissi `?` / `!` vengono rimossi dai nomi delle definizioni, e le chiamate mantengono `self.` e la qualificazione di classe.

## Punti di ingresso MCP utili

- `find_symbol`: Usalo con il nome di un tipo, protocollo o metodo quando ti servono definizione e riferimenti.
- `dependency_search`: Usalo su un protocollo per trovare i tipi conformi, o in incoming su un metodo per trovare i chiamanti.
- `get_task_context`: Usalo per prompt come "spiega come una notifica push arriva alla schermata della posta in arrivo".
