# Swift i Maguyva: kodegrafer til iOS og macOS

Canonical source: https://maguyva.ai/da/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 understøtter Swift med AST, symboler og graf, så AI-agenter kan følge protokoller, extensions, initializers og observers i iOS- og macOS-kode.

## Øjebliksbillede af understøttelse

- Niveau: AST- og symbolunderstøttelse
- Programmering
- Filendelser: .swift
- Rigtig AST-parsing til syntaksbevidst søgning og strukturel kontekst.
- Navngivne symboler understøtter semantisk opslag og krydsreferencer. Grafnavigation er tilgængelig, når relationsudtræk er aktiveret.
- Dette sprog bidrager med symboler og relationer til grafbaseret søgning; de understøttede kanttyper varierer med sprogets egne konstruktioner.
- Både AST-parsing og symboludtræk er tilgængelige.

## Bedst egnet til

- iOS- og macOS-teams med store app-targets og delte Swift-pakker.
- Kodebaser bygget op omkring protokoller og extensions, hvor en types adfærd er spredt over mange filer.
- Agentarbejdsgange, der kræver konsekvensanalyse, før en delt model, tjeneste eller protokol ændres.

## Agent-arbejdsgange

- Finde alle typer, der overholder en protokol, før et af dens krav ændres.
- Spore, hvem der kalder en tjenestemetode, på tværs af ViewModels, coordinators og pakker.
- Finde initializers, beregnede egenskaber og `didSet`-observers, der berører en given tilstand.

## Hvorfor Swift kræver mere end filsøgning

Swift spreder én type ud over mange steder. En struct erklæres i én fil, får adfærd fra extensions i tre andre og overholder protokoller, der er defineret i en pakke. Tilstandsændringer gemmer sig i beregnede egenskaber og `willSet` / `didSet`-observers. En agent, der læser én fil ad gangen, overser det meste.

Maguyva indekserer strukturen, så en agent kan se en types medlemmer, protokoloverholdelser og kaldere samlet.

## Hvad Maguyva udtrækker i Swift

Maguyva dækker `.swift`. Kaldbare symboler omfatter funktioner, `init` og `deinit`, subscripts, getters og setters til beregnede egenskaber samt `willSet` / `didSet`-observers, så kode, der ændrer tilstand, kan søges som symboler i stedet for at blive begravet i egenskabskroppe.

Medlemmer, der erklæres i structs, enums, protokoller og extensions, kvalificeres med deres ejertype (for eksempel `CartStore.add`), og medlemmer tilføjet i en extension tilskrives den udvidede type. Generiske parametre, lister over protokoloverholdelse og suffikserne `?` / `!` fjernes fra definitionsnavnene, så opslag bruger det rene navn. Kald bevarer `self.` og klassekvalificering, og trailing closures tæller med i kaldets aritet.

Grafen registrerer kald, protokoloverholdelse, nedarvning, overskrivninger, instansiering, attributter, typereferencer, læsninger og skrivninger samt `throw`-kanter.

## Eksempler på prompts til agenter

- "Hvilke typer overholder `PaymentProvider`, og hvor oprettes hver af dem?" (`dependency_search`)
- "Hvem kalder `CartStore.add`, og fra hvilke views?" (`find_symbol`, derefter `dependency_search` incoming)
- "Forklar, hvordan en push-notifikation når frem til indbakkeskærmen." (`get_task_context`)

## Kendte begrænsninger

- Kun `.swift`-kildekode er knyttet. Storyboard- og XIB-filer er ikke på listen over filendelser, så forbindelser i Interface Builder ligger uden for grafen.
- Kald i standardbiblioteket og Foundation som `print`, `debugPrint`, `NSLog` og assertions filtreres fra relationerne og er derfor ikke kanter i grafen. Brug `text_pattern_search` til dem.

## Næste skridt

Tilslut et repository med [hurtigstarten](/da/docs/quickstart), og se derefter understøttelsesmatricen på [kompatibilitetssiden](/da/docs/compatibility). Hvis du udgiver det samme produkt på Android, så læs [guiden til Kotlin](/da/languages/kotlin).

## Motordetaljer

- Kaldbare symboler omfatter funktioner, `init`, `deinit`, subscripts, getters og setters til beregnede egenskaber samt `willSet` / `didSet`-observers.
- Medlemmer af structs, enums, protokoller og extensions kvalificeres med deres ejertype, for eksempel `CartStore.add`.
- Generiske parametre, lister over protokoloverholdelse og suffikserne `?` / `!` fjernes fra definitionsnavne, og kald bevarer `self.` og klassekvalificering.

## Nyttige MCP-indgange

- `find_symbol`: Brug det til et type-, protokol- eller metodenavn, når du har brug for definitionen og referencerne.
- `dependency_search`: Brug det på en protokol for at finde typer, der overholder den, eller incoming på en metode for at finde kaldere.
- `get_task_context`: Brug det til prompts som "forklar, hvordan en push-notifikation når frem til indbakkeskærmen".
