2016-11-14 10 views
5

मान लें कि हमारे पास स्विफ्ट में लिखे गए 2 ढांचे हैं: A.framework और B.framework, AB पर निर्भर करता है। मैं प्रोजेक्ट स्रोत फ़ाइलों में import B के बिना फ्रेमवर्क B के एपीआई तक पहुंचने में सक्षम होने के लिए A पर निर्भर करता हूं। यह कैसे प्राप्त किया जा सकता है?स्विफ्ट: निर्भरता का निर्यात एपीआई

EDIT: विशेष रूप से मुझे पता है कि यह कोकोपोड्स के माध्यम से कैसे किया जा सकता है।

किसी अन्य संस्करण: मुझे लगता है कि अगर मैं इस प्रश्न को उत्पन्न करता हूं तो संदर्भ में यह समझा जाएगा, क्योंकि मुझे अभी भी इसकी अवधि और बक्षीस के बावजूद उचित उत्तर नहीं मिला है।

तो, मेरे पास Freestyler (https://github.com/cayugasoft/Freestyler) है जो स्वयं पॉड FreestylerCore (https://github.com/cayugasoft/FreestylerCore) पर निर्भर करता है। ठीक काम करता है, लेकिन import Freestyler किया गया है, भले ही मुझे प्रोजेक्ट में import FreestylerCore करना है। यह मेरे लिए थोड़ा परेशान दिखता है, क्योंकि मैं इस निर्भरता (Freestyler -> FreestylerCore) को कार्यान्वयन के विस्तार के रूप में मानता हूं और मैं चाहता हूं कि लाइब्रेरी के उपयोगकर्ताओं को मुख्य रूप से मुख्य पॉड, Freestyler को छोड़कर कुछ भी आयात किए बिना काम कर रहे हों। इसलिए, यही कारण है कि मैंने इस सवाल से पूछा। क्या इसे लागू करने के कोई तरीके हैं?

+0

गलत होने पर मुझे सही करें, क्योंकि ए बी पर निर्भर करता है और ए की स्रोत फाइलों में आयात बी है। अब आप पी स्रोत फाइलों में आयात बी के बिना प्रोजेक्ट पी करना चाहते हैं? क्या वह सही है ? यदि ऐसा है तो आप आखिरकार बी को ए के लिए निर्भरता के रूप में जोड़ना चाहते हैं और केवल ए को पी की निर्भरता के रूप में जोड़ना चाहते हैं? –

+0

@PenkeySuresh: मैं मूल रूप से उद्देश्य-सी में छतरी शीर्षलेख की तरह कुछ चाहता हूँ। आप इस हेडर को आयात करते हैं और अन्य सभी शीर्षलेख स्वचालित रूप से आयात किए जाते हैं और आपको उन्हें मैन्युअल रूप से आयात करने की आवश्यकता नहीं होती है। मैं सोच रहा हूं कि समान व्यवहार को लागू करने के लिए तंत्र है, लेकिन स्विफ्ट में। –

+0

मुझे लगता है कि आप जो खोज रहे हैं वह '@ _exported' है। – HAS

उत्तर

0

स्विफ्ट में यह पता चला है कि यह डिफ़ॉल्ट व्यवहार है।

यदि Pod.A Pod.B पर निर्भर करता है, तो आपकी प्रोजेक्ट जो Pod.A पर निर्भर करती है (आपके पॉडफाइल में Pod.A को शामिल करने के माध्यम से) वास्तव में Pod.B. की दृश्यता होगी।

के उदाहरण देखने के लिए कि कैसे एक Pod.A एक निर्भरता है कि सेटअप, और फिर एक उदाहरण परियोजना है कि Pod.A खपत (और यह भी Pod.B को दृश्यता है) इस के लिए मेरे लोक GitHub रेपो डेमो देखने के लिए:

https://github.com/ericwastaken/CocoaPod-Dependency-Demo

मैं उदाहरण ऐप (ViewController) है कि इस काम के चलता पर टिप्पणियां जोड़ीं। रेपो में अतिरिक्त स्पष्टीकरण हैं।

+0

उत्तर के लिए धन्यवाद, @ericWasTaken। दुर्भाग्यवश, मेरा मतलब यह नहीं था। यह स्पष्ट है कि आप प्रोजेक्ट में पॉड बी का उपयोग कर सकते हैं जो फोड ए पर निर्भर करता है, * यदि आप पॉड बी * आयात करते हैं, लेकिन मैंने पूछा कि यह कैसे प्राप्त करें * पॉड बी आयात किए बिना, केवल पॉड ए * आयात कर रहा है। मैंने आपके जीथब उदाहरण को देखा - यदि व्यू कंट्रोलर में लाइन 'आयात StackO_Dependency_Demo' पर टिप्पणी की गई है, तो कोड संकलित नहीं होगा। –

+0

मेरा उदाहरण ऐप कभी भी Podfile में Pod.B का संदर्भ नहीं देता है। Pod.B प्रतिक्रिया पॉड है! मेरा उदाहरण केवल Pod.A का संदर्भ देता है और यह स्वचालित रूप से आपको Pod.B (प्रतिक्रिया पॉड) तक पहुंच प्रदान करता है जो Pod.A (StackO pod = Pod.A) के माध्यम से आता है। बेशक अगर आप Pod.A को हटाते हैं तो यह नहीं बन जाएगा। दृश्य नियंत्रक में उपयोग किया जाने वाला मुख्य पॉड है।किसी भी मामले में, शायद आप Pod.B तर्क के एक स्थिर समावेशन की तलाश में हैं। आप निश्चित रूप से उन कक्षाओं को अपने Pod.A में ला सकते हैं और एक ही पॉड के रूप में एक साथ संकलित कर सकते हैं। लेकिन ऐसा नहीं है कि कोकोपॉड आखिरकार कैसे काम करता है और न ही इसके लिए क्या है। – ericWasTaken

+0

हां अब आपके प्रश्न को देख रहे हैं, अगर आप आयात विवरण नहीं चाहते हैं, तो आपको अपने Pod.A में Pod.B तर्क कोड/कक्षाएं शामिल करने की आवश्यकता है। शायद आप Pod.B कांटा कर सकते हैं और फिर इसे अपना तर्क जोड़ सकते हैं। कम से कम इस तरह आप भविष्य में अपने कांटे में परिवर्तन विलय करने में सक्षम हो सकते हैं। – ericWasTaken

संबंधित मुद्दे