मेरे पास एक मिश्रित स्विफ्ट और उद्देश्य-सी प्रोजेक्ट है। उद्देश्य-सी में एक स्विफ्ट सार्वजनिक एपीआई तक पहुंचने के लिए, एपीआई उपभोक्ता को वर्तमान में "MyModule-Swift.h" आयात करना है। मेरे पास पहले से ही "MyModule.h" नामक एक उद्देश्य-सी छतरी हैडर है। लेकिन, "MyModule.h" आयात करना स्विफ्ट एपीआई के लिए काम नहीं करेगा। मैंने छतरी शीर्षलेख में "MyModule-Swift.h" आयात करने का प्रयास किया, लेकिन यह नहीं मिला (मुझे लगता है कि यह एक्सकोड द्वारा फ्लाई पर उत्पन्न होता है)।छतरी शीर्षलेख में -Swift.h शामिल करें
स्विफ्ट/उद्देश्य-सी में लिखे गए सार्वजनिक एपीआई का उपयोग करने के लिए एक एपीआई उपभोक्ता हमेशा "MyModule.h" आयात कर सकता है, तो वास्तव में सराहना की जाएगी।
============================================== ======================
संपादित करें: मैं प्रश्न को ठीक से फ्रेम करने के लिए समय नहीं लेने के लिए क्षमा चाहता हूं। मेरे पास MyModule
नामक एक ढांचा है।
मैं एक ऑब्जेक्टिव-सी वर्ग,
@interface ABUser: NSObject
- (void)walk;
@end
मैं इस वर्ग स्विफ्ट का उपयोग करने के नए व्यवहार जोड़ना चाहते थे, इसलिए मैं एक विस्तार
extension ABUser {
func swiftWalk()
}
अब परिभाषित, कहते हैं कि मैं चाहता था ABUser
कहा जाता है एक उद्देश्य-सी ऐप से ABUser
पर परिभाषित swiftWalk
विधि तक पहुंचने के लिए, मुझे #import <MyModule/MyModule-Swift.h>
करना होगा। #import <MyModule/MyModule.h>
काम करेगा अगर मैं walk
विधि का उपयोग करना चाहता था। यह छतरी हैडर MyModule.h
आयात ABUser.h
मान रहा है।
मैं हमेशा उद्देश्य-सी ऐप को #import <MyModule/MyModule.h>
पर चाहता था और इस बारे में चिंता करने की ज़रूरत नहीं है कि क्या एपीआई उद्देश्य-सी या ढांचे में स्विफ्ट में लिखा गया था या नहीं। इसलिए, मैंने छतरी शीर्षलेख MyModule.h
में MyModule-Swift.h
आयात करने का प्रयास किया। लेकिन, मेरा उद्देश्य-सी ऐप संकलित नहीं हुआ अगर ऐसा करता है। निश्चित नहीं है, अगर ऐसा इसलिए है क्योंकि बिल्ड प्रक्रिया के दौरान फ्लाई पर एक्सकोड द्वारा MyModule-Swift.h
उत्पन्न होता है।
संपादित 2: एक नमूना परियोजना यहाँ इस समस्या को ठीक करने जोड़ा गया: https://github.com/priteshshah1983/MyObjectiveCApp
प्रासंगिक कोड ViewController.m
में है। बिल्ड master
शाखा के साथ असफल हो जाएगा। इसे काम करने के लिए, working
शाखा चेकआउट करें।
"कृपया समझाने में संकोच न करें" मेरी प्रेरणा क्या है? आपने स्वयं को सही उत्तर दिया है, इसलिए बक्षीस अवांछनीय है। आपने कुछ भी नहीं के लिए 50 अंक फेंक दिए हैं ... और सवाल अभी भी काफी सड़ा हुआ है। क्या है "लेकिन, यह काम नहीं किया" _mean_ भी? – matt
ठीक है, मैंने अपने उत्तर को सही उत्तर के रूप में वापस ले लिया। क्षमा करें, मुझे नहीं लगता कि मैं इसे इससे बेहतर समझा सकता हूं। मैंने देखा कि आप पहले से ही मुझे इसके लिए वोट दिया है! – pshah
समस्या को समझने और पुन: उत्पन्न करने के लिए किसी व्यक्ति के लिए आवश्यक सभी वास्तविक कोड क्या नहीं दिखा सकते हैं? – matt