# Maguyva में Swift: iOS और macOS के लिए कोड ग्राफ़

Canonical source: https://maguyva.ai/hi/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, Swift को AST, सिंबल और ग्राफ़ के साथ सपोर्ट करता है, ताकि AI एजेंट iOS और macOS कोड में प्रोटोकॉल, एक्सटेंशन, इनिशियलाइज़र और ऑब्ज़र्वर ट्रेस कर सकें।

## सपोर्ट स्नैपशॉट

- टियर: AST और सिंबल सपोर्ट
- प्रोग्रामिंग
- एक्सटेंशन: .swift
- सिंटैक्स-अवेयर सर्च और स्ट्रक्चरल कॉन्टेक्स्ट के लिए असली AST पार्सिंग।
- नामित सिंबल सिमेंटिक लुकअप और क्रॉस-रेफ़रेंस को फ़ीड करते हैं। रिलेशनशिप एक्सट्रैक्शन सक्षम होने पर ग्राफ़ नेविगेशन उपलब्ध होता है।
- यह भाषा ग्राफ़-अवेयर सर्च में सिंबल्स और रिलेशनशिप्स जोड़ती है; सपोर्टेड एज प्रकार इसके नेटिव कंस्ट्रक्ट्स के अनुसार बदलते हैं।
- AST पार्सिंग और सिंबल एक्सट्रैक्शन, दोनों उपलब्ध हैं।

## सबसे उपयुक्त

- बड़े ऐप टार्गेट और साझा Swift पैकेज वाली iOS और macOS टीमें।
- प्रोटोकॉल और एक्सटेंशन के इर्द-गिर्द बने कोडबेस, जहाँ किसी type का व्यवहार कई फ़ाइलों में बिखरा होता है।
- एजेंट वर्कफ़्लो, जिन्हें किसी साझा मॉडल, सेवा या प्रोटोकॉल को बदलने से पहले इम्पैक्ट एनालिसिस चाहिए।

## एजेंट वर्कफ़्लो

- किसी प्रोटोकॉल की कोई आवश्यकता बदलने से पहले उसे कन्फ़ॉर्म करने वाला हर type ढूँढना।
- ViewModels, कोऑर्डिनेटर और पैकेज में किसी सेवा मेथड के कॉलर ट्रेस करना।
- किसी स्टेट को छूने वाले इनिशियलाइज़र, कंप्यूटेड प्रॉपर्टी और `didSet` ऑब्ज़र्वर ढूँढना।

## Swift को फ़ाइल सर्च से ज़्यादा की ज़रूरत क्यों है

Swift एक type को कई जगह फैला देती है। कोई struct एक फ़ाइल में घोषित होता है, तीन दूसरी फ़ाइलों के एक्सटेंशन से व्यवहार पाता है, और किसी पैकेज में परिभाषित प्रोटोकॉल को कन्फ़ॉर्म करता है। स्टेट में बदलाव कंप्यूटेड प्रॉपर्टी और `willSet` / `didSet` ऑब्ज़र्वर में छिपे होते हैं। एक बार में एक फ़ाइल पढ़ने वाला एजेंट इसका ज़्यादातर हिस्सा चूक जाता है।

Maguyva इस संरचना को इंडेक्स करता है, ताकि एजेंट किसी type के मेंबर, कन्फ़ॉर्मेंस और कॉलर एक साथ देखे।

## Maguyva, Swift से क्या निकालता है

Maguyva `.swift` को कवर करता है। कॉल किए जा सकने वाले सिंबल में फ़ंक्शन, `init` और `deinit`, subscripts, कंप्यूटेड-प्रॉपर्टी getters और setters, और `willSet` / `didSet` ऑब्ज़र्वर शामिल हैं, ताकि स्टेट बदलने वाला कोड प्रॉपर्टी बॉडी में खोने के बजाय सिंबल के रूप में खोजा जा सके।

structs, enums, प्रोटोकॉल और एक्सटेंशन में घोषित मेंबर अपने ओनर type से क्वालिफ़ाई होते हैं (जैसे `CartStore.add`), और किसी एक्सटेंशन में जोड़े गए मेंबर उस type से जोड़े जाते हैं जिसे एक्सटेंड किया गया है। परिभाषा नामों से जेनेरिक पैरामीटर, प्रोटोकॉल-कन्फ़ॉर्मेंस सूचियाँ और `?` / `!` सफ़िक्स हटा दिए जाते हैं, ताकि खोज सीधे नाम से हो। कॉल `self.` और क्लास क्वालिफ़ायर बनाए रखते हैं, और ट्रेलिंग क्लोज़र कॉल की एरिटी में गिने जाते हैं।

ग्राफ़ कॉल, प्रोटोकॉल कन्फ़ॉर्मेंस, इनहेरिटेंस, ओवरराइड, इंस्टैंशिएशन, attributes, टाइप रेफ़रेंस, रीड और राइट, और `throw` एज दर्ज करता है।

## एजेंट प्रॉम्प्ट के उदाहरण

- "कौन-से टाइप `PaymentProvider` को कन्फ़ॉर्म करते हैं, और हर एक कहाँ बनता है?" (`dependency_search`)
- "`CartStore.add` को कौन कॉल करता है, और किन व्यू से?" (`find_symbol`, फिर incoming दिशा में `dependency_search`)
- "समझाओ कि पुश नोटिफ़िकेशन इनबॉक्स स्क्रीन तक कैसे पहुँचता है।" (`get_task_context`)

## ज्ञात सीमाएँ

- सिर्फ़ `.swift` सोर्स ही मैप होता है। Storyboard और XIB फ़ाइलें एक्सटेंशन सूची में नहीं हैं, इसलिए Interface Builder कनेक्शन ग्राफ़ से बाहर रहते हैं।
- `print`, `debugPrint`, `NSLog` और असर्शन जैसे स्टैंडर्ड-लाइब्रेरी और Foundation कॉल संबंधों से फ़िल्टर किए जाते हैं, इसलिए वे ग्राफ़ एज नहीं हैं। इनके लिए `text_pattern_search` इस्तेमाल करें।

## अगले कदम

[क्विकस्टार्ट](/hi/docs/quickstart) से रिपॉज़िटरी जोड़ें, फिर सपोर्ट मैट्रिक्स [कम्पैटिबिलिटी पेज](/hi/docs/compatibility) पर देखें। अगर आप वही प्रोडक्ट Android पर भी देते हैं, तो [Kotlin गाइड](/hi/languages/kotlin) पढ़ें।

## इंजन विवरण

- कॉल किए जा सकने वाले सिंबल में फ़ंक्शन, `init`, `deinit`, subscripts, कंप्यूटेड-प्रॉपर्टी getters और setters, और `willSet` / `didSet` ऑब्ज़र्वर शामिल हैं।
- structs, enums, प्रोटोकॉल और एक्सटेंशन के मेंबर अपने ओनर type से क्वालिफ़ाई होते हैं, जैसे `CartStore.add`।
- परिभाषा नामों से जेनेरिक पैरामीटर, प्रोटोकॉल-कन्फ़ॉर्मेंस सूचियाँ और `?` / `!` सफ़िक्स हटा दिए जाते हैं, और कॉल `self.` और क्लास क्वालिफ़ायर बनाए रखते हैं।

## उपयोगी MCP एंट्री पॉइंट

- `find_symbol`: जब आपको परिभाषा और रेफ़रेंस चाहिए, तो किसी type, प्रोटोकॉल या मेथड नाम के साथ इस्तेमाल करें।
- `dependency_search`: कन्फ़ॉर्म करने वाले टाइप ढूँढने के लिए किसी प्रोटोकॉल पर, या कॉलर ढूँढने के लिए किसी मेथड पर incoming दिशा में इस्तेमाल करें।
- `get_task_context`: "समझाओ कि पुश नोटिफ़िकेशन इनबॉक्स स्क्रीन तक कैसे पहुँचता है" जैसे प्रॉम्प्ट के लिए इस्तेमाल करें।
