xcode - एक्सकोड 6/बीटा 4: फ्रेमवर्क लक्ष्यों के साथ ब्रिजिंग हेडर का उपयोग असमर्थित है




frameworks beta (2)

मैंने अभी एक्सकोड 6 बीटा 4 में अपग्रेड किया है और एक फ्रेमवर्क है जिसे मैंने बीटा 2 में लाइव व्यू के लिए बनाया है। एक और तेज bug कारण, मुझे कुछ ओब्जे-सी कोड का उपयोग करने की आवश्यकता थी। हालांकि उन्नयन करते समय, मुझे निम्न त्रुटि मिलती है:

त्रुटि: फ्रेमवर्क लक्ष्यों के साथ ब्रिजिंग हेडर का उपयोग असमर्थित है

मैंने रिलीज नोट्स में कुछ भी नहीं देखा है, या कोई अन्य माइग्रेशन पथ मिला है। क्या किसी और ने इसे देखा है और समाधान पर पहुंचा है?

मुझे एहसास है कि बीटा 3 ने लाइव विचारों के लिए ढांचे की आवश्यकता को समाप्त कर दिया है, लेकिन अगर मैं इसे काम पर ला सकता हूं तो यह मेरे मामले में समझ में आता है। हालांकि मैं इसे फॉलबैक के रूप में हटा सकता हूं, लेकिन अगर वे बीटा 4 में पूरी तरह टूट नहीं जाते हैं तो वे ढांचे का उपयोग करना पसंद करेंगे।


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

हालांकि, मैंने पाया कि आपको उन विशिष्ट शीर्षकों को भी सार्वजनिक करने की आवश्यकता हो सकती है। यह उत्तर समीक्षा क्यों करता है और कैसे करें: स्विफ्ट कंपाइलर त्रुटि: "फ्रेमवर्क मॉड्यूल के अंदर गैर-मॉड्यूलर हेडर"

तो, यह करो:

  1. अपनी ब्रिजिंग हेडर फ़ाइल निकालें।
  2. ढांचे के लिए बिल्ड सेटिंग्स में ब्रिजिंग हेडर फ़ाइल के संदर्भ हटाएं
  3. आवश्यक शीर्षलेख अपनी छतरी फ़ाइल ([ProductName] में जोड़ें। एच)
  4. अपने "बिल्ड चरण" के ढांचे के "शीर्षलेख" खंड में शामिल फ़ाइलों को सार्वजनिक बनाएं।
  5. स्वच्छ और पुनर्निर्माण।

नोट : "छतरी शीर्षलेख फ़ाइल" एक फ़ाइल है (नाम [ProductName] .h) जो आमतौर पर ढांचे के सभी सार्वजनिक शीर्षकों का प्रतिनिधित्व करता है। यह आमतौर पर ढांचे में निहित अन्य शीर्षकों के लिए # आयात विवरणों की एक सूची है। एक्सकोड में, यदि आप UIKit.h खोलते हैं, तो आपको छतरी फ़ाइल का एक अच्छा उदाहरण दिखाई देगा।


दो संभावनाएं हैं। आवश्यक हेडर को छतरी शीर्षलेख फ़ाइल में जोड़ना और उन्हें सार्वजनिक बनाना एक तरीका है। हालांकि, यह एक समस्या है यदि हेडर स्विफ्ट के लिए उपलब्ध होना चाहिए, लेकिन सार्वजनिक नहीं।

दूसरी संभावना जो स्विफ्ट को आंतरिक हेडर उपलब्ध कराएगी, here विस्तार से वर्णन किया गया here । अनिवार्य रूप से, निम्नलिखित मॉड्यूल के लिए एक मॉड्यूल मानचित्र बनाया जाना चाहिए:

module AwesomeKitPrivate {  
  header "../InternalClass.h"
  export *
}

इसे सेटिंग का उपयोग कर एक्सकोड में शामिल किया जा सकता है:

SWIFT_INCLUDE_PATHS = $(SRCROOT)/AwesomeKit/ProjectModule  




beta