# Swift di Maguyva: graf kode untuk iOS dan macOS

Canonical source: https://maguyva.ai/id/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 mendukung Swift dengan AST, simbol, dan graf, sehingga agen AI dapat menelusuri protocol, extension, initializer, dan observer dalam kode iOS dan macOS.

## Snapshot dukungan

- Tier: Dukungan AST dan simbol
- Pemrograman
- Ekstensi: .swift
- Parsing AST sungguhan untuk pencarian sadar-syntax dan konteks struktural.
- Simbol bernama menggerakkan pencarian semantik dan cross-reference. Navigasi graf tersedia saat ekstraksi relasi diaktifkan.
- Bahasa ini menyumbangkan simbol dan relasi ke pencarian berbasis graf; jenis edge yang didukung bervariasi sesuai konstruk bawaan bahasa tersebut.
- Parsing AST dan ekstraksi simbol sama-sama tersedia.

## Paling cocok untuk

- Tim iOS dan macOS dengan target aplikasi yang besar dan paket Swift bersama.
- Basis kode yang dibangun di sekitar protocol dan extension, tempat perilaku sebuah tipe tersebar di banyak berkas.
- Alur kerja agen yang membutuhkan analisis dampak sebelum model, layanan, atau protocol bersama berubah.

## Workflow agent

- Menemukan setiap tipe yang mematuhi sebuah protocol sebelum salah satu persyaratannya berubah.
- Menelusuri pemanggil metode layanan di seluruh ViewModel, coordinator, dan paket.
- Menemukan initializer, properti terhitung, dan observer `didSet` yang menyentuh sebuah state.

## Mengapa Swift membutuhkan lebih dari pencarian berkas

Swift menyebarkan satu tipe ke banyak tempat. Sebuah struct dideklarasikan di satu berkas, mendapat perilaku dari extension di tiga berkas lain, dan mematuhi protocol yang didefinisikan dalam sebuah paket. Perubahan state bersembunyi di properti terhitung dan observer `willSet` / `didSet`. Agen yang membaca satu berkas setiap kali melewatkan sebagian besar hal itu.

Maguyva mengindeks struktur ini, sehingga agen melihat anggota, kepatuhan, dan pemanggil sebuah tipe secara bersamaan.

## Apa yang diekstrak Maguyva dari Swift

Maguyva mencakup `.swift`. Simbol yang dapat dipanggil mencakup fungsi, `init` dan `deinit`, subscript, getter dan setter properti terhitung, serta observer `willSet` / `didSet`, sehingga kode yang mengubah state dapat dicari sebagai simbol alih-alih tenggelam di dalam badan properti.

Anggota yang dideklarasikan di struct, enum, protocol, dan extension dikualifikasi dengan tipe pemiliknya (misalnya `CartStore.add`), dan anggota yang ditambahkan dalam extension diatribusikan ke tipe yang diperluas. Parameter generic, daftar kepatuhan protocol, serta sufiks `?` / `!` dibuang dari nama definisi, sehingga pencarian memakai nama polos. Panggilan mempertahankan `self.` dan kualifikasi kelas, dan trailing closure dihitung dalam aritas panggilan.

Graf mencatat panggilan, kepatuhan protocol, pewarisan, override, instansiasi, atribut, referensi tipe, pembacaan dan penulisan, serta edge `throw`.

## Contoh prompt agen

- "Tipe mana yang mematuhi `PaymentProvider`, dan di mana masing-masing dibuat?" (`dependency_search`)
- "Siapa yang memanggil `CartStore.add`, dan dari view mana?" (`find_symbol`, lalu `dependency_search` arah masuk)
- "Jelaskan bagaimana sebuah notifikasi push sampai ke layar kotak masuk." (`get_task_context`)

## Batasan yang diketahui

- Hanya sumber `.swift` yang dipetakan. Berkas Storyboard dan XIB tidak ada dalam daftar ekstensi, sehingga koneksi Interface Builder berada di luar graf.
- Panggilan pustaka standar dan Foundation seperti `print`, `debugPrint`, `NSLog`, dan assertion difilter dari relasi, sehingga bukan edge graf. Gunakan `text_pattern_search` untuk itu.

## Langkah berikutnya

Hubungkan repositori dengan [panduan memulai cepat](/id/docs/quickstart), lalu periksa matriks dukungan di [halaman kompatibilitas](/id/docs/compatibility). Jika Anda merilis produk yang sama di Android, baca [panduan Kotlin](/id/languages/kotlin).

## Detail engine

- Simbol yang dapat dipanggil mencakup fungsi, `init`, `deinit`, subscript, getter dan setter properti terhitung, serta observer `willSet` / `didSet`.
- Anggota struct, enum, protocol, dan extension dikualifikasi dengan tipe pemiliknya, seperti `CartStore.add`.
- Parameter generic, daftar kepatuhan protocol, serta sufiks `?` / `!` dibuang dari nama definisi, dan panggilan mempertahankan `self.` serta kualifikasi kelas.

## Titik masuk MCP yang berguna

- `find_symbol`: Gunakan dengan nama tipe, protocol, atau metode saat Anda membutuhkan definisi dan referensi.
- `dependency_search`: Gunakan pada protocol untuk menemukan tipe yang mematuhinya, atau arah masuk pada metode untuk menemukan pemanggil.
- `get_task_context`: Gunakan untuk prompt seperti “jelaskan bagaimana sebuah notifikasi push sampai ke layar kotak masuk”.
