# Swift v Maguyva: grafy kódu pro iOS a macOS

Canonical source: https://maguyva.ai/cs/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 podporuje Swift s AST, symboly a grafem, takže AI agenti sledují protokoly, rozšíření, inicializátory a pozorovatele v kódu pro iOS a macOS.

## Přehled podpory

- Úroveň: Podpora AST a symbolů
- Programování
- Přípony: .swift
- Skutečné parsování AST pro vyhledávání citlivé na syntaxi a strukturální kontext.
- Pojmenované symboly napájejí sémantické vyhledávání a křížové odkazy. Navigace v grafu je k dispozici, když je povolena extrakce vztahů.
- Tento jazyk přispívá symboly a vztahy do vyhledávání využívajícího graf; podporované typy hran se liší podle jeho nativních konstrukcí.
- K dispozici je parsování AST i extrakce symbolů.

## Nejlépe se hodí pro

- Týmy pro iOS a macOS s velkými cíli aplikací a sdílenými balíčky ve Swiftu.
- Kódové základny postavené na protokolech a rozšířeních, kde je chování jednoho typu rozprostřeno v mnoha souborech.
- Pracovní postupy agentů, které před změnou sdíleného modelu, služby nebo protokolu potřebují analýzu dopadu.

## Workflow agentů

- Najít všechny typy, které vyhovují protokolu, než se změní některý z jeho požadavků.
- Dohledat volající metody služby napříč ViewModely, koordinátory a balíčky.
- Najít inicializátory, vypočítané vlastnosti a pozorovatele `didSet`, které se dotýkají daného stavu.

## Proč Swift potřebuje víc než vyhledávání v souborech

Swift rozprostírá jeden typ do mnoha míst. Struktura je deklarovaná v jednom souboru, chování získává z rozšíření ve třech dalších a vyhovuje protokolům definovaným v balíčku. Změny stavu se skrývají ve vypočítaných vlastnostech a pozorovatelích `willSet` / `didSet`. Agent, který čte jeden soubor po druhém, většinu z toho přehlédne.

Maguyva tuto strukturu indexuje, takže agent vidí členy typu, jeho shody s protokoly i volající pohromadě.

## Co Maguyva ve Swiftu extrahuje

Maguyva pokrývá `.swift`. Volatelné symboly zahrnují funkce, `init` a `deinit`, subskripty, gettery a settery vypočítaných vlastností a pozorovatele `willSet` / `didSet`, takže kód měnící stav lze vyhledat jako symbol a nezůstane schovaný v tělech vlastností.

Členy deklarované ve strukturách, výčtech, protokolech a rozšířeních se kvalifikují vlastnickým typem (například `CartStore.add`) a členy přidané v rozšíření se přiřadí rozšiřovanému typu. Z názvů definic se odstraňují generické parametry, seznamy shody s protokoly a přípony `?` / `!`, takže vyhledávání používá prostý název. Volání zachovávají `self.` a kvalifikaci třídou a koncové uzávěry se započítávají do arity volání.

Graf zaznamenává volání, shodu s protokoly, dědičnost, přepisy, vytváření instancí, atributy, odkazy na typy, čtení a zápisy a hrany `throw`.

## Ukázkové prompty pro agenty

- „Které typy vyhovují `PaymentProvider` a kde se každý z nich vytváří?“ (`dependency_search`)
- „Kdo volá `CartStore.add` a ze kterých pohledů?“ (`find_symbol`, pak `dependency_search` incoming)
- „Vysvětli, jak se push notifikace dostane na obrazovku doručené pošty.“ (`get_task_context`)

## Známá omezení

- Přiřazen je jen zdrojový kód `.swift`. Soubory Storyboard a XIB nejsou v seznamu přípon, takže propojení z Interface Builderu zůstávají mimo graf.
- Volání standardní knihovny a Foundation jako `print`, `debugPrint`, `NSLog` a aserce se z vazeb odfiltrují, takže nejsou hranami grafu. K jejich vyhledání použijte `text_pattern_search`.

## Další kroky

Připojte repozitář podle [rychlého startu](/cs/docs/quickstart) a pak si prohlédněte matici podpory na [stránce kompatibility](/cs/docs/compatibility). Pokud stejný produkt vydáváte i pro Android, přečtěte si [průvodce jazykem Kotlin](/cs/languages/kotlin).

## Podrobnosti enginu

- Volatelné symboly zahrnují funkce, `init`, `deinit`, subskripty, gettery a settery vypočítaných vlastností a pozorovatele `willSet` / `didSet`.
- Členy struktur, výčtů, protokolů a rozšíření se kvalifikují vlastnickým typem, například `CartStore.add`.
- Z názvů definic se odstraňují generické parametry, seznamy shody s protokoly a přípony `?` / `!` a volání zachovávají `self.` a kvalifikaci třídou.

## Užitečné vstupní body MCP

- `find_symbol`: Použijte s názvem typu, protokolu nebo metody, když potřebujete definici a odkazy.
- `dependency_search`: Použijte na protokolu k nalezení vyhovujících typů, nebo směrem incoming na metodě k nalezení volajících.
- `get_task_context`: Použijte pro prompty typu „vysvětli, jak se push notifikace dostane na obrazovku doručené pošty“.
