# Swift dalam Maguyva: graf kod untuk iOS dan macOS

Canonical source: https://maguyva.ai/ms/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 menyokong Swift dengan AST, simbol dan graf, supaya ejen AI boleh menjejak protocol, extension, pemula dan pemerhati dalam kod iOS dan macOS.

## Gambaran sokongan

- Peringkat: Sokongan AST dan simbol
- Pengaturcaraan
- Sambungan fail: .swift
- Penghuraian AST sebenar untuk carian sedar-sintaks dan konteks struktur.
- Simbol bernama menyokong carian semantik dan rujukan silang. Navigasi graf tersedia apabila pengekstrakan hubungan didayakan.
- Bahasa ini menyumbang simbol dan hubungan kepada carian berasaskan graf; jenis edge yang disokong berbeza mengikut binaan aslinya.
- Penghuraian AST dan pengekstrakan simbol kedua-duanya tersedia.

## Paling sesuai

- Pasukan iOS dan macOS dengan sasaran aplikasi yang besar dan pakej Swift kongsi.
- Pangkalan kod yang dibina di sekitar protocol dan extension, tempat tingkah laku sesuatu jenis tersebar di banyak fail.
- Aliran kerja ejen yang memerlukan analisis impak sebelum model, perkhidmatan atau protocol kongsi berubah.

## Aliran kerja ejen

- Mencari setiap jenis yang mematuhi sesuatu protocol sebelum salah satu keperluannya berubah.
- Menjejak pemanggil kaedah perkhidmatan merentas ViewModel, penyelaras dan pakej.
- Mencari pemula, sifat terkira dan pemerhati `didSet` yang menyentuh sesuatu keadaan.

## Mengapa Swift memerlukan lebih daripada carian fail

Swift menyebarkan satu jenis ke banyak tempat. Sesuatu struct diisytiharkan dalam satu fail, mendapat tingkah laku daripada extension dalam tiga fail lain, dan mematuhi protocol yang ditakrifkan dalam sesuatu pakej. Perubahan keadaan tersembunyi dalam sifat terkira dan pemerhati `willSet` / `didSet`. Ejen yang membaca satu fail pada satu masa terlepas kebanyakan perkara ini.

Maguyva mengindeks struktur ini, supaya ejen melihat ahli, pematuhan dan pemanggil sesuatu jenis secara serentak.

## Apa yang diekstrak oleh Maguyva daripada Swift

Maguyva meliputi `.swift`. Simbol boleh panggil merangkumi fungsi, `init` dan `deinit`, subscript, getter dan setter sifat terkira, serta pemerhati `willSet` / `didSet`, supaya kod yang mengubah keadaan boleh dicari sebagai simbol dan tidak hilang di dalam badan sifat.

Ahli yang diisytiharkan dalam struct, enum, protocol dan extension dilayakkan dengan jenis pemiliknya (contohnya `CartStore.add`), dan ahli yang ditambah dalam extension dikaitkan dengan jenis yang dilanjutkan. Parameter generik, senarai pematuhan protocol dan akhiran `?` / `!` dibuang daripada nama definisi, jadi carian menggunakan nama asal. Panggilan mengekalkan `self.` dan pelayak kelas, dan trailing closure dikira dalam ariti panggilan.

Graf merekodkan panggilan, pematuhan protocol, pewarisan, penggantian, penginstansian, atribut, rujukan jenis, bacaan dan tulisan, serta tepi `throw`.

## Contoh gesaan ejen

- "Jenis mana yang mematuhi `PaymentProvider`, dan di mana setiap satunya dicipta?" (`dependency_search`)
- "Siapa yang memanggil `CartStore.add`, dan daripada paparan mana?" (`find_symbol`, kemudian `dependency_search` arah masuk)
- "Terangkan cara pemberitahuan push sampai ke skrin peti masuk." (`get_task_context`)

## Had yang diketahui

- Hanya sumber `.swift` dipetakan. Fail Storyboard dan XIB tiada dalam senarai sambungan, jadi sambungan Interface Builder berada di luar graf.
- Panggilan pustaka standard dan Foundation seperti `print`, `debugPrint`, `NSLog` dan penegasan ditapis daripada hubungan, jadi ia bukan tepi graf. Gunakan `text_pattern_search` untuknya.

## Langkah seterusnya

Sambungkan repositori dengan [panduan permulaan pantas](/ms/docs/quickstart), kemudian semak matriks sokongan di [halaman keserasian](/ms/docs/compatibility). Jika anda melancarkan produk yang sama di Android, baca [panduan Kotlin](/ms/languages/kotlin).

## Butiran enjin

- Simbol boleh panggil merangkumi fungsi, `init`, `deinit`, subscript, getter dan setter sifat terkira, serta pemerhati `willSet` / `didSet`.
- Ahli struct, enum, protocol dan extension dilayakkan dengan jenis pemiliknya, seperti `CartStore.add`.
- Parameter generik, senarai pematuhan protocol dan akhiran `?` / `!` dibuang daripada nama definisi, dan panggilan mengekalkan `self.` serta pelayak kelas.

## Titik masuk MCP yang berguna

- `find_symbol`: Gunakan dengan nama jenis, protocol atau kaedah apabila anda memerlukan definisi dan rujukan.
- `dependency_search`: Gunakan pada protocol untuk mencari jenis yang mematuhinya, atau arah masuk pada kaedah untuk mencari pemanggil.
- `get_task_context`: Gunakan untuk gesaan seperti “terangkan cara pemberitahuan push sampai ke skrin peti masuk”.
