में उपयोग नहीं किया जा सकता है, raf's answer अभी भी सही है। सबसे साफ समाधान यह है कि जब तक आपको ऑब्जेक्टिव-सी हेडर से इसे एक्सेस करने की आवश्यकता न हो, तब तक अपने एनम को ऑब्जेक्टिव-सी फ़ाइल में छोड़ दें। हालांकि, मैं एक और संभावित कामकाज पेश करना चाहता था।
मेरे मामले में मैं धीरे-धीरे स्विफ्ट में एक बड़ी उद्देश्य-सी परियोजना को फिर से लिख रहा हूं, और अगर मुझे स्विफ्ट में मेरे अधिक कोड को फिर से लिखने की अनुमति मिलती है तो मुझे अपूर्ण कामकाज नहीं लगता है। तो मैं उद्देश्य-सी के लिए enum को गुजरने के लिए बस गया है क्योंकि यह कच्चे प्रकार, Int
, या NSInteger
उद्देश्य-सी के लिए है। उदाहरण के लिए:
- (void)doSomethingWithType:(NSInteger)rawType {
if (rawType == ExampleTypeWhatever) {
// Do something
} // etc...
}
जब मैं स्विफ्ट से इस विधि कॉल, सब मैं क्या करना है .rawType
पारित किया जाता है, वास्तविक enum मान के बजाय:
objcObject.doSomething(withType: ExampleType.whatever.rawValue)
यह बातें दोनों पक्षों पर काफी सरल रहता है , और doSomethingWithType:
को एक बार अपडेट करना आसान हो जाएगा, अंत में स्विफ्ट में फिर से लिखा जाएगा।
सहमत हैं कि कोई अच्छा जवाब नहीं है। मैं जिस कोडबेस पर काम कर रहा हूं वह स्विफ्ट और ऑब्जेक्टिव सी के बीच प्रवाह में है, इसलिए मेरा समाधान यहां (कुछ हद तक) उचित ओबीजेसी फ़ाइल में enum घोषित करना था, जब तक कि हम पूरी तरह से स्विफ्ट पर न हों। ब्रिजिंग हेडर फ़ाइल का उपयोग करके, ओबीजेसी के बीच enums साझा करने और उस तरह से तेजी से साझा करना बहुत आसान है। – Elise
बिल्कुल, दुर्भाग्य से यह आपकी सबसे अच्छी शर्त हो सकती है, खासकर अगर enum को आपकी परियोजना के भीतर उस दृश्यता की आवश्यकता हो। – raf
फॉरवर्ड घोषित कार्य: 'टाइपपीफ SWIFT_ENUM (एनएसआईएनटेगर, माईएनम);' – amleszk