# Swift i Maguyva: kodegrafer for iOS og macOS

Canonical source: https://maguyva.ai/nb/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 støtter Swift med AST, symboler og graf, slik at AI-agenter kan følge protokoller, extensions, initialisatorer og observatører i iOS- og macOS-kode.

## Støtteoversikt

- Nivå: AST- og symbolstøtte
- Programmering
- Filendelser: .swift
- Ekte AST-analyse for syntaksbevisst søk og strukturell kontekst.
- Navngitte symboler mater semantisk oppslag og kryssreferanser. Grafnavigasjon er tilgjengelig når relasjonsuttrekk er aktivert.
- Dette språket bidrar med symboler og relasjoner til grafbasert søk; støttede kanttyper varierer med språkets egne konstruksjoner.
- Både AST-analyse og symboluttrekk er tilgjengelige.

## Best egnet

- iOS- og macOS-team med store app-targets og delte Swift-pakker.
- Kodebaser bygd rundt protokoller og extensions, der atferden til én type er spredt over mange filer.
- Agentarbeidsflyter som trenger konsekvensanalyse før en delt modell, tjeneste eller protokoll endres.

## Agent-arbeidsflyter

- Finne alle typer som oppfyller en protokoll før ett av kravene endres.
- Spore hvem som kaller en tjenestemetode på tvers av ViewModels, coordinators og pakker.
- Finne initialisatorer, beregnede egenskaper og `didSet`-observatører som berører en gitt tilstand.

## Hvorfor Swift trenger mer enn filsøk

Swift sprer én type over mange steder. En struct deklareres i én fil, får atferd fra extensions i tre andre og oppfyller protokoller som er definert i en pakke. Tilstandsendringer gjemmer seg i beregnede egenskaper og `willSet` / `didSet`-observatører. En agent som leser én fil om gangen, går glipp av det meste.

Maguyva indekserer strukturen, slik at en agent kan se medlemmene, protokolloppfyllelsene og kallerne til en type samlet.

## Hva Maguyva henter ut i Swift

Maguyva dekker `.swift`. Kallbare symboler omfatter funksjoner, `init` og `deinit`, subscripts, gettere og settere for beregnede egenskaper samt `willSet` / `didSet`-observatører, slik at kode som endrer tilstand kan søkes som symboler i stedet for å bli begravd i egenskapskropper.

Medlemmer som deklareres i structs, enums, protokoller og extensions, kvalifiseres med eiertypen sin (for eksempel `CartStore.add`), og medlemmer som legges til i en extension, tilskrives den utvidede typen. Generiske parametere, lister over protokolloppfyllelse og suffiksene `?` / `!` fjernes fra definisjonsnavnene, så oppslag bruker det rene navnet. Kall beholder `self.` og klassekvalifisering, og trailing closures teller med i kallets aritet.

Grafen registrerer kall, protokolloppfyllelse, arv, overstyringer, instansiering, attributter, typereferanser, lesinger og skrivinger samt `throw`-kanter.

## Eksempler på prompter for agenter

- «Hvilke typer oppfyller `PaymentProvider`, og hvor opprettes hver av dem?» (`dependency_search`)
- «Hvem kaller `CartStore.add`, og fra hvilke visninger?» (`find_symbol`, deretter `dependency_search` incoming)
- «Forklar hvordan et pushvarsel når frem til innboksskjermen.» (`get_task_context`)

## Kjente begrensninger

- Bare `.swift`-kildekode er knyttet til Swift. Storyboard- og XIB-filer står ikke på listen over filendelser, så koblinger i Interface Builder ligger utenfor grafen.
- Kall i standardbiblioteket og Foundation som `print`, `debugPrint`, `NSLog` og assertions filtreres ut av relasjonene og er derfor ikke kanter i grafen. Bruk `text_pattern_search` for dem.

## Neste steg

Koble til et repositorium med [hurtigstarten](/nb/docs/quickstart), og se deretter støttematrisen på [kompatibilitetssiden](/nb/docs/compatibility). Hvis du leverer samme produkt på Android, bør du lese [veiledningen for Kotlin](/nb/languages/kotlin).

## Motordetaljer

- Kallbare symboler omfatter funksjoner, `init`, `deinit`, subscripts, gettere og settere for beregnede egenskaper samt `willSet` / `didSet`-observatører.
- Medlemmer av structs, enums, protokoller og extensions kvalifiseres med eiertypen sin, for eksempel `CartStore.add`.
- Generiske parametere, lister over protokolloppfyllelse og suffiksene `?` / `!` fjernes fra definisjonsnavn, og kall beholder `self.` og klassekvalifisering.

## Nyttige MCP-inngangspunkter

- `find_symbol`: Bruk det for et type-, protokoll- eller metodenavn når du trenger definisjonen og referansene.
- `dependency_search`: Bruk det på en protokoll for å finne typer som oppfyller den, eller incoming på en metode for å finne kallere.
- `get_task_context`: Bruk det til prompter som «forklar hvordan et pushvarsel når frem til innboksskjermen».
