# Swift w Maguyva: grafy kodu dla iOS i macOS

Canonical source: https://maguyva.ai/pl/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 obsługuje Swifta przez AST, symbole i graf, dzięki czemu agenci AI śledzą protokoły, rozszerzenia, inicjalizatory i obserwatory w kodzie iOS i macOS.

## Migawka wsparcia

- Poziom: Obsługa AST i symboli
- Programowanie
- Rozszerzenia: .swift
- Prawdziwe parsowanie AST dla wyszukiwania świadomego składni i kontekstu strukturalnego.
- Nazwane symbole zasilają wyszukiwanie semantyczne i wzajemne odwołania. Nawigacja po grafie jest dostępna po włączeniu ekstrakcji relacji.
- Ten język dostarcza symbole i relacje do wyszukiwania uwzględniającego graf; obsługiwane typy krawędzi zależą od jego rodzimych konstrukcji.
- Dostępne są zarówno parsowanie AST, jak i ekstrakcja symboli.

## Najlepsze dopasowanie

- Zespoły iOS i macOS z dużymi targetami aplikacji i współdzielonymi pakietami Swifta.
- Bazy kodu zbudowane wokół protokołów i rozszerzeń, w których zachowanie jednego typu jest rozproszone po wielu plikach.
- Przepływy pracy agentów wymagające analizy wpływu przed zmianą współdzielonego modelu, usługi lub protokołu.

## Workflow agentów

- Znaleźć wszystkie typy zgodne z protokołem przed zmianą jednego z jego wymagań.
- Prześledzić wywołujących metodę usługi w ViewModelach, koordynatorach i pakietach.
- Zlokalizować inicjalizatory, właściwości obliczane i obserwatory `didSet`, które dotykają danego stanu.

## Dlaczego Swift potrzebuje czegoś więcej niż wyszukiwania w plikach

Swift rozprasza jeden typ po wielu miejscach. Struktura jest deklarowana w jednym pliku, dostaje zachowanie z rozszerzeń w trzech innych i jest zgodna z protokołami zdefiniowanymi w pakiecie. Zmiany stanu kryją się we właściwościach obliczanych i obserwatorach `willSet` / `didSet`. Agent czytający jeden plik naraz przeoczy większość z tego.

Maguyva indeksuje tę strukturę, więc agent widzi razem składowe typu, jego zgodności i wywołujących.

## Co Maguyva wyodrębnia w Swifcie

Maguyva obejmuje `.swift`. Symbole wywoływalne obejmują funkcje, `init` i `deinit`, subskrypty, gettery i settery właściwości obliczanych oraz obserwatory `willSet` / `didSet`, więc kod zmieniający stan można wyszukać jako symbol, zamiast szukać go w ciałach właściwości.

Składowe zadeklarowane w strukturach, wyliczeniach, protokołach i rozszerzeniach są kwalifikowane typem właściciela (na przykład `CartStore.add`), a składowe dodane w rozszerzeniu są przypisywane do rozszerzanego typu. Z nazw definicji usuwane są parametry generyczne, listy zgodności z protokołami oraz sufiksy `?` / `!`, więc wyszukiwanie używa samej nazwy. Wywołania zachowują `self.` i kwalifikację klasą, a domknięcia końcowe liczą się do arności wywołania.

Graf zapisuje wywołania, zgodność z protokołami, dziedziczenie, nadpisania, tworzenie instancji, atrybuty, odwołania do typów, odczyty i zapisy oraz krawędzie `throw`.

## Przykładowe prompty dla agentów

- „Które typy są zgodne z `PaymentProvider` i gdzie każdy z nich jest tworzony?” (`dependency_search`)
- „Kto wywołuje `CartStore.add` i z których widoków?” (`find_symbol`, potem `dependency_search` incoming)
- „Wyjaśnij, jak powiadomienie push trafia na ekran skrzynki odbiorczej.” (`get_task_context`)

## Znane ograniczenia

- Przypisany jest tylko kod źródłowy `.swift`. Pliki Storyboard i XIB nie znajdują się na liście rozszerzeń, więc połączenia z Interface Buildera pozostają poza grafem.
- Wywołania biblioteki standardowej i Foundation, takie jak `print`, `debugPrint`, `NSLog` i asercje, są filtrowane z relacji, więc nie są krawędziami grafu. Do ich wyszukiwania użyj `text_pattern_search`.

## Kolejne kroki

Podłącz repozytorium za pomocą [szybkiego startu](/pl/docs/quickstart), a potem sprawdź macierz obsługi na [stronie zgodności](/pl/docs/compatibility). Jeśli ten sam produkt wydajesz na Androida, przeczytaj [przewodnik po Kotlinie](/pl/languages/kotlin).

## Szczegóły silnika

- Symbole wywoływalne obejmują funkcje, `init`, `deinit`, subskrypty, gettery i settery właściwości obliczanych oraz obserwatory `willSet` / `didSet`.
- Składowe struktur, wyliczeń, protokołów i rozszerzeń są kwalifikowane typem właściciela, na przykład `CartStore.add`.
- Parametry generyczne, listy zgodności z protokołami i sufiksy `?` / `!` są usuwane z nazw definicji, a wywołania zachowują `self.` i kwalifikację klasą.

## Przydatne punkty wejścia MCP

- `find_symbol`: Używaj go z nazwą typu, protokołu lub metody, gdy potrzebujesz definicji i odwołań.
- `dependency_search`: Użyj go na protokole, aby znaleźć zgodne typy, albo w kierunku incoming na metodzie, aby znaleźć wywołujących.
- `get_task_context`: Używaj go do promptów typu „wyjaśnij, jak powiadomienie push trafia na ekran skrzynki odbiorczej”.
