# Swift i Maguyva: kodgrafer för iOS och macOS

Canonical source: https://maguyva.ai/sv/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öder Swift med AST, symboler och graf, så att AI-agenter kan följa protokoll, extensions, initierare och observatörer i iOS- och macOS-kod.

## Stödöversikt

- Nivå: Stöd för AST och symboler
- Programmering
- Filändelser: .swift
- Riktig AST-parsning för syntaxmedveten sökning och strukturell kontext.
- Namngivna symboler driver semantisk uppslagning och korsreferenser. Grafnavigering är tillgänglig när relationsextraktion är aktiverad.
- Det här språket bidrar med symboler och relationer till grafmedveten sökning; vilka kanttyper som stöds varierar med språkets inbyggda konstruktioner.
- Både AST-parsning och symbolextraktion är tillgängliga.

## Bäst lämpad för

- iOS- och macOS-team med stora app-targets och delade Swift-paket.
- Kodbaser byggda kring protokoll och extensions, där en typs beteende är utspritt över många filer.
- Agentarbetsflöden som behöver konsekvensanalys innan en delad modell, tjänst eller ett protokoll ändras.

## Agentarbetsflöden

- Hitta alla typer som uppfyller ett protokoll innan ett av dess krav ändras.
- Spåra anropare av en tjänstemetod över ViewModels, coordinators och paket.
- Hitta initierare, beräknade egenskaper och `didSet`-observatörer som rör ett visst tillstånd.

## Varför Swift behöver mer än filsökning

Swift sprider ut en typ på många ställen. En struct deklareras i en fil, får beteende från extensions i tre andra och uppfyller protokoll som definieras i ett paket. Tillståndsändringar gömmer sig i beräknade egenskaper och `willSet` / `didSet`-observatörer. En agent som läser en fil i taget missar det mesta.

Maguyva indexerar strukturen, så att en agent ser en typs medlemmar, protokolluppfyllelser och anropare tillsammans.

## Vad Maguyva extraherar i Swift

Maguyva täcker `.swift`. Anropbara symboler omfattar funktioner, `init` och `deinit`, subscripts, getters och setters för beräknade egenskaper samt `willSet` / `didSet`-observatörer, så att kod som ändrar tillstånd är sökbar som symboler i stället för att begravas i egenskapskroppar.

Medlemmar som deklareras i structs, enums, protokoll och extensions kvalificeras med sin ägartyp (till exempel `CartStore.add`), och medlemmar som läggs till i en extension tillskrivs den utökade typen. Generiska parametrar, listor över protokolluppfyllelse och suffixen `?` / `!` tas bort ur definitionsnamnen, så uppslag använder det rena namnet. Anrop behåller `self.` och klasskvalificering, och trailing closures räknas med i anropets aritet.

Grafen registrerar anrop, protokolluppfyllelse, arv, överskrivningar, instansiering, attribut, typreferenser, läsningar och skrivningar samt `throw`-kanter.

## Exempel på prompter för agenter

- "Vilka typer uppfyller `PaymentProvider`, och var skapas var och en?" (`dependency_search`)
- "Vem anropar `CartStore.add`, och från vilka vyer?" (`find_symbol`, sedan `dependency_search` incoming)
- "Förklara hur en pushnotis når inkorgsskärmen." (`get_task_context`)

## Kända begränsningar

- Endast `.swift`-källkod är kopplad. Storyboard- och XIB-filer finns inte i listan över filändelser, så kopplingar i Interface Builder ligger utanför grafen.
- Anrop i standardbiblioteket och Foundation som `print`, `debugPrint`, `NSLog` och assertions filtreras bort ur relationerna och är därför inte kanter i grafen. Använd `text_pattern_search` för dem.

## Nästa steg

Anslut ett repo med [snabbstarten](/sv/docs/quickstart) och kontrollera sedan stödmatrisen på [kompatibilitetssidan](/sv/docs/compatibility). Om du levererar samma produkt på Android, läs [guiden för Kotlin](/sv/languages/kotlin).

## Motordetaljer

- Anropbara symboler omfattar funktioner, `init`, `deinit`, subscripts, getters och setters för beräknade egenskaper samt `willSet` / `didSet`-observatörer.
- Medlemmar i structs, enums, protokoll och extensions kvalificeras med sin ägartyp, till exempel `CartStore.add`.
- Generiska parametrar, listor över protokolluppfyllelse och suffixen `?` / `!` tas bort ur definitionsnamn, och anrop behåller `self.` och klasskvalificering.

## Användbara MCP-ingångar

- `find_symbol`: Använd det för ett typ-, protokoll- eller metodnamn när du behöver definitionen och referenserna.
- `dependency_search`: Använd det på ett protokoll för att hitta typer som uppfyller det, eller incoming på en metod för att hitta anropare.
- `get_task_context`: Använd det för prompter som "förklara hur en pushnotis når inkorgsskärmen".
