# Swift in Maguyva: Code-Graphen für iOS und macOS

Canonical source: https://maguyva.ai/de/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 unterstützt Swift mit AST, Symbolen und Graph, damit KI-Agenten Protokolle, Extensions, Initializer und Observer in iOS- und macOS-Code verfolgen können.

## Unterstützungsüberblick

- Stufe: AST- und Symbol-Support
- Programmierung
- Dateiendungen: .swift
- Echtes AST-Parsing für syntaxbewusste Suche und strukturellen Kontext.
- Benannte Symbole speisen semantisches Lookup und Cross-Referenzierung. Graph-Navigation ist verfügbar, wenn die Beziehungsextraktion aktiviert ist.
- Diese Sprache liefert Symbole und Beziehungen für die graphgestützte Suche; die unterstützten Kantentypen variieren je nach nativen Konstrukten der Sprache.
- AST-Parsing und Symbolextraktion sind beide verfügbar.

## Am besten geeignet

- iOS- und macOS-Teams mit großen App-Targets und gemeinsam genutzten Swift-Paketen.
- Codebasen rund um Protokolle und Extensions, in denen das Verhalten eines Typs über viele Dateien verteilt ist.
- Agenten-Workflows, die eine Auswirkungsanalyse brauchen, bevor sich ein gemeinsames Modell, ein Dienst oder ein Protokoll ändert.

## Agentenabläufe

- Jeden Typ finden, der einem Protokoll entspricht, bevor sich eine seiner Anforderungen ändert.
- Aufrufer einer Dienstmethode über ViewModels, Coordinators und Pakete hinweg nachverfolgen.
- Initializer, berechnete Properties und `didSet`-Observer finden, die einen bestimmten Zustand berühren.

## Warum Swift mehr braucht als eine Dateisuche

Swift verteilt einen Typ auf viele Stellen. Ein Struct wird in einer Datei deklariert, erhält Verhalten aus Extensions in drei anderen und entspricht Protokollen, die in einem Paket definiert sind. Zustandsänderungen verstecken sich in berechneten Properties und `willSet` / `didSet`-Observern. Ein Agent, der eine Datei nach der anderen liest, übersieht das meiste davon.

Maguyva indexiert die Struktur, sodass ein Agent die Member, Protokollkonformitäten und Aufrufer eines Typs zusammen sehen kann.

## Was Maguyva in Swift extrahiert

Maguyva deckt `.swift` ab. Zu den aufrufbaren Symbolen gehören Funktionen, `init` und `deinit`, Subscripts, Getter und Setter berechneter Properties sowie `willSet` / `didSet`-Observer. Zustandsändernder Code ist damit als Symbol durchsuchbar, statt in Property-Rümpfen zu verschwinden.

Member, die in Structs, Enums, Protokollen und Extensions deklariert sind, werden mit ihrem besitzenden Typ qualifiziert (zum Beispiel `CartStore.add`), und in einer Extension hinzugefügte Member werden dem erweiterten Typ zugeordnet. Bei Definitionsnamen werden generische Parameter, Listen der Protokollkonformität und die Suffixe `?` / `!` entfernt, sodass Abfragen den schlichten Namen verwenden. Aufrufe behalten `self.` und die Klassenqualifizierung, und Trailing Closures zählen zur Aufrufarität.

Der Graph erfasst Aufrufe, Protokollkonformität, Vererbung, Overrides, Instanziierung, Attribute, Typreferenzen, Lese- und Schreibzugriffe sowie `throw`-Kanten.

## Beispiel-Prompts für Agenten

- „Welche Typen entsprechen `PaymentProvider`, und wo wird jeder davon erzeugt?“ (`dependency_search`)
- „Wer ruft `CartStore.add` auf, und aus welchen Views?“ (`find_symbol`, dann `dependency_search` incoming)
- „Erkläre, wie eine Push-Benachrichtigung den Posteingang-Bildschirm erreicht.“ (`get_task_context`)

## Bekannte Grenzen

- Nur `.swift`-Quelltext ist zugeordnet. Storyboard- und XIB-Dateien stehen nicht in der Liste der Dateiendungen, daher liegen Interface-Builder-Verbindungen außerhalb des Graphen.
- Aufrufe der Standardbibliothek und von Foundation wie `print`, `debugPrint`, `NSLog` und Assertions werden aus den Beziehungen gefiltert und sind daher keine Graphkanten. Verwende dafür `text_pattern_search`.

## Nächste Schritte

Verbinde ein Repository über den [Schnellstart](/de/docs/quickstart) und prüfe dann die Unterstützungsmatrix auf der [Kompatibilitätsseite](/de/docs/compatibility). Wenn du dasselbe Produkt auch für Android auslieferst, lies den [Kotlin-Leitfaden](/de/languages/kotlin).

## Engine-Einordnung

- Zu den aufrufbaren Symbolen gehören Funktionen, `init`, `deinit`, Subscripts, Getter und Setter berechneter Properties sowie `willSet` / `didSet`-Observer.
- Member von Structs, Enums, Protokollen und Extensions werden mit ihrem besitzenden Typ qualifiziert, etwa `CartStore.add`.
- Generische Parameter, Listen der Protokollkonformität und die Suffixe `?` / `!` werden aus Definitionsnamen entfernt, und Aufrufe behalten `self.` und die Klassenqualifizierung.

## Nützliche MCP-Einstiegspunkte

- `find_symbol`: Nutz es für einen Typ-, Protokoll- oder Methodennamen, wenn du Definition und Referenzen brauchst.
- `dependency_search`: Nutz es auf einem Protokoll, um konforme Typen zu finden, oder die eingehende Traversierung auf einer Methode, um Aufrufer zu finden.
- `get_task_context`: Nutz es für Prompts wie „erkläre, wie eine Push-Benachrichtigung den Posteingang-Bildschirm erreicht“.
