2015-06-29 7 views
6

में मैं इतना के रूप में एक typedef की है। हालांकि, जब मैं एक स्विफ्ट फ़ाइल में VMVideoCategoryType पहुँच करने की कोशिश मैं एक त्रुटि मिलती है:का उपयोग Obj सी typedef स्विफ्ट

Use of undeclared type 'VMVideoCategoryType'

इस काम करने के लिए कोई तरीका है या मैं पूरी तरह से करना है स्विफ्ट में इस प्रकार के फिर से परिभाषित?

उत्तर

9

मैं थोड़ा अटकलें हूँ, लेकिन कारण यह है कि ऑब्जेक्टिव-सी वस्तुओं NSString की तरह स्थिर आवंटित नहीं किया जा सकता हो रहा है (उदाहरण के लिए Are objects in Objective-C ever created on the stack? देखें)। यदि

typedef NSString VMVideoCategoryType; 

स्विफ्ट में आयात किया गया है तो आप एक स्थानीय चर

var foo : VMVideoCategoryType 

जो एक NSString और नहींNSString के लिए सूचक होगा की घोषणा कर सकता है।

ध्यान दें कि स्विफ्ट में आप जो देखते हैं NSStringNSString * उद्देश्य-सी में मेल खाता है।

आप NSString * के लिए एक typedef के रूप में VMVideoCategoryType को परिभाषित तो यह स्विफ्ट में दिख रहा है:

typedef NSString * VMVideoCategoryType; 

extern VMVideoCategoryType const VMVideoCategoryType_MusicVideo; 
// ... 
+0

यह स्विफ्ट त्रुटियों की है कि प्रकार का उपयोग Obj सी में मेरे पिछले प्रकार घोषणाओं छुटकारा लेकिन तब के लिए काम करता है त्रुटियों को फेंक दें: 'एक अप्रत्यक्ष सूचक को एक उद्देश्य-सी सूचक' को 'एनएसएसटींग *' में लागू करने के लिए एआरसी ' – Ramsel

+0

@ रैमसेल से अस्वीकृत है: उस परिवर्तन के बाद आपको 'VMVideoCategoryType *' द्वारा 'VMVideoCategoryType *' को प्रतिस्थापित करना होगा (जैसा कि मैंने किया था बाहरी परिभाषाएं)। –

+0

@ रैमसेल: अगर इससे मदद नहीं मिलती है, तो कृपया उद्देश्य-सी कोड जोड़ें जिससे समस्या आपके प्रश्न में आती है। –

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