2016-03-22 12 views
16

स्विफ्ट 2.2 के साथ एक्सकोड 7.3 के अपडेट के बाद से मैं बाहरी उद्देश्य-सी लाइब्रेरी से चर तक पहुंचने में सक्षम नहीं हूं।बाहरी एनएसएसटींग स्विफ्ट 2.2

आज के बाद से मैं इस चर पर पहुंच सकता था:

extern NSString* const DEFAULT_URL; 

यह एक precompiled ए ढांचे से एक ऑब्जेक्टिव-सी हेडर फाइल में परिभाषित किया गया है।

मेरे स्विफ्ट कोड में मुझे केवल DEFAULT_URL पर कॉल करना पड़ा।

स्विफ्ट 2.2 जब से मैं निम्नलिखित errror मिलती है:

Use of unresolved identifier 'DEFAULT_URL' 

मैं वर्गों और इस ढांचे के तरीकों का उपयोग करने में सक्षम हूँ, लेकिन मैं extern NSStrings उपयोग नहीं कर सकते।

कोई विचार यह कैसे ठीक करें?

+0

मैंने इस मुद्दे को अद्यतन किया है, बाहरी को ओबीजे-सी हेडर फ़ाइल में परिभाषित किया गया है। मैंने ब्रिजिंग हेडर भी बनाया है। – patrickS

+0

नहीं, लेकिन मैंने इसे अभी जोड़ा है, लेकिन यह कुछ भी नहीं बदलता है। – patrickS

+0

मुझे एक ही समस्या है। –

उत्तर

34

@patrickS मेरे पास मूर्खतापूर्ण कारण के लिए यह था, मेरे बाहरी कोस्ट को मेरी .h फ़ाइल में @interface के अंदर परिभाषित किया गया था। ऐसा लगता है कि यह एक्सकोड/क्लैंग के इस संस्करण के साथ स्विफ्ट कोड के लिए निजी बना दिया गया है। यह सभी बाहरी कॉन्स पर लागू होता है न कि केवल एनएसएसटींग *।

उदा।

//In Foo.h 
extern const int kBlah 

@interface Foo 
... 
@end 

बजाय

//In Foo.h 
@interface Foo 
extern const int kBlah 
... 
@end 
+0

यह मेरी समस्या का समाधान करता है धन्यवाद! – patrickS

+0

तो मेरा धन्यवाद, धन्यवाद! –

+0

वही टाइपिफ़ के लिए जाता है –

2

की मैं एक ही समस्या थी और सवाल के रूप में, ext तार निर्भरता से प्रबंधित (खांसी फली खांसी) तृतीय पक्ष में मेरे मामले में थे पुस्तकालय। तो मैं लंबे समय तक सब कुछ गड़बड़ किए बिना आसानी से उन्हें चारों ओर स्थानांतरित नहीं कर सका।

मैं दो समाधान पाया:

  1. कॉपी-पेस्ट (के नीचे) अपने ब्रिजिंग हैडर
  2. उद्देश्य सी में अपने स्वयं के स्थिर सहायक वर्ग कि के रूप में ext तार प्रदान करता है लिखने के लिए ext घोषणा कक्षा के तरीकों (और स्विफ्ट के लिए यह स्थैतिक सहायक उपलब्ध कराएं)

मैं इसे आपके पास छोड़ देता हूं जो आपको दो आसान समाधानों में से एक है (मैं समाधान 1 के साथ गया था, क्योंकि मैं आलसी हूं)।