ios - एक्सकोड 6 बग: इंटरफेस बिल्डर फ़ाइल में अज्ञात वर्ग




xcode xcode6 (20)

@gfrs ने क्या कहा सही है, आपको मॉड्यूल सेट करने की आवश्यकता है। हालांकि मैं एक बार एक मुद्दा में भाग गया कि मेरी कक्षा Class ड्रॉपडाउन में सूचीबद्ध नहीं थी। आखिरकार मैंने स्विफ्ट फाइल को हटा दिया, एक्सकोड फिर से शुरू किया और फाइल को फिर से बनाया। अंत में कक्षा सूचीबद्ध थी और स्टोरीबोर्ड में इस्तेमाल किया जा सकता था।

इस उत्तर पर भी एक नज़र डालें, जो मुझे लगता है कि 'असली' समस्या का समाधान करना पसंद है।

मैंने एक्सकोड 6 बीटा 4 में अपग्रेड किया और अब मेरी ऐप लगातार संदेश के साथ दुर्घटनाग्रस्त हो गई है

इंटरफेस बिल्डर फ़ाइल में अज्ञात वर्ग एक्स।

यह दुर्घटनाग्रस्त हो जाता है क्योंकि माना जाता है कि एक्सकोड मेरी कस्टम कक्षाओं को नहीं ढूंढ सकता है जिसे मैंने अपने स्टोरीबोर्ड में जोड़ा है लेकिन यह दिखाता है कि वे एक्सकोड इंटरफेस में सही ढंग से जुड़े हुए हैं।

मैं सकारात्मक हूं सब ठीक से जुड़ा हुआ है। मेरा एकमात्र अन्य विकल्प संपूर्ण स्टोरीबोर्ड फ़ाइल को हटाना और स्क्रैच से शुरू करना हो सकता है क्योंकि यह किसी भी तरह से दूषित हो सकता है।

संपादित करें: मैं यह भी जोड़ना चाहूंगा कि मैंने सफाई करने की कोशिश की, सिम्युलेटर को रीसेट करना, निर्माण चरणों के साथ गड़बड़ाना आदि। इनमें से कोई भी काम नहीं करता है।


अपनी अज्ञात क्लास फ़ाइल का चयन करें, फ़ाइल इंस्पेक्टर टैब खोलें, Target Membership में अपना लक्ष्य नाम देखें। तुम वहाँ जाओ।


एक नया लक्ष्य जोड़ने के बाद मुझे यह समस्या थी, फिर 'नई फ़ाइल' संवाद का उपयोग करके एक नई कक्षा बनाई लेकिन निर्माण लक्ष्य में नए लक्ष्य के साथ-साथ मूल लक्ष्य को गलती से विफल करने में विफल रहा, इसलिए ऑब्जेक्ट केवल मेरे लिए जोड़ा गया था मूल लक्ष्य समाधान स्रोत फ़ाइलों को हटाने के लिए था (केवल संदर्भ हटाएं) फिर उन्हें 'फ़ाइलें जोड़ें' का उपयोग करके वापस जोड़ें, इस बार दोनों लक्ष्यों की जांच करें।


कभी-कभी customModule="AppName" customModuleProvider="target" ने customModule="AppName" customModuleProvider="target"

इसे ठीक करने के लिए, स्रोत कोड के रूप में स्टोरीबोर्ड खोलें और इस पंक्ति को प्रतिस्थापित करें:

<viewController storyboardIdentifier="StoryboardId" id="SomeID" customClass="CustomClass"
sceneMemberID="viewController">

इसके लिए:

<viewController storyboardIdentifier="StoryboardId" id="SomeID" customClass="CustomClass"
 customModule="AppName" customModuleProvider="target" sceneMemberID="viewController">

जब मैंने Main.storyboard , LaunchScreen.xib फ़ाइल और मेरे प्रोजेक्ट से डिफ़ॉल्ट LaunchScreen.xib कक्षाओं को हटा दिया तो मुझे Main.storyboard 6.1 में इस समस्या का सामना करना पड़ा।

मैंने Info.plist से Launch Screen File और Main Interface प्रविष्टियों को हटाकर इसे ठीक किया


जब मैंने स्विफ्ट प्रोजेक्ट से ऑब्जेक्टिव-सी प्रोजेक्ट से स्टोरीबोर्ड को पोर्ट किया, तो मुझे समस्या का सामना करना पड़ा, vvkuznetsov के जवाब को देखते हुए , यह दो पहचानकर्ताओं का उपयोग करके एक ही पहचानकर्ता का उपयोग कर निकला। मैं "उत्पाद -> साफ़" और मॉड्यूल और कक्षा टेक्स्ट फ़ील्ड पर एंटर कुंजी टैप करें। मुद्दा चला गया।


मुझे एक्सकोड 8 में इस समस्या का सामना करना पड़ा, इसे हल करने के लिए मुझे टेक्स्ट एडिटर में स्टोरीबोर्ड को संशोधित करना पड़ा।

सामान्य रूप से, अपने नियंत्रण के लिए देखो और नियंत्रण इकाई से customModule और customModuleProvider को हटा दें।

मेरे लिए एक चाल थी।


मुझे एक्सकोड संस्करण 6.1 (6 ए 1052 डी) के साथ एक ही समस्या थी। मुझे लगता है कि अगर आप अपना ऐप / एक्सकोड प्रोजेक्ट बदल चुके हैं तो समस्या दिखाई देती है।

मेरा समाधान मैन्युअल नाम इंटरफ़ेस निर्माता में मैन्युअल रूप से जोड़ना था।


मेरा उत्तर: कस्टम पॉड नाम के समान कस्टम मॉड्यूल सेट करें (मेरे उदाहरण में - कस्टम क्लास नाम) स्क्रीनशॉट संलग्न की तरह

यह समाधान एक विशिष्ट मामले के लिए है : पॉड (या कार्थेज ) ढांचे से कस्टम दृश्य वर्गों के लिए।

इंफ्रास्ट्रक्चर: एक्सकोड 8, स्विफ्ट 3


मेरा समाधान (एक्सकोड 8.1 स्विफ्ट 3.0):

इंटरफेस बिल्डर फ़ाइल में अज्ञात वर्ग xxx

स्रोत कोड के रूप में ओपन स्टोरीबोर्ड और xxx के लिए खोजें। विशेषता xxx जिसमें विशेषताएँ निकालें। बिल्ड और रन करें।


मेरी Custom Class लिए उचित Module का चयन करके मैंने इस समस्या को हल किया।

यह रहा :


मेरे मामले में, मैंने इसे काम करने के लिए प्रोजेक्ट सेटिंग्स में Other Linker Flags लिए ध्वज- -ObjC जोड़ा। इसके अलावा मैंने फ्लैग -all_load ध्वज के साथ प्रयास किया और यह भी अच्छी तरह से काम किया।


मेरे लिए केवल क्या काम किया गया है वास्तव में xib फ़ाइल में मॉड्यूल नाम जोड़ रहा है ...

Sooo, xib फाइलें इस तरह दिखती हैं:

mymodule.MyViewController.xib (Module being the name of the proyect, usually)

मेरी राय में घबराहट समाधान, लेकिन यह माना जाता है कि ऐप्पल अब हमें यह कैसे करना चाहता है।

यह प्रश्न बीटा 4 में वापस 3 संभावित काम दिखाता है ... स्पष्ट रूप से ऐप्पल इस स्थिति में कुछ लोगों के लिए बहुत उपयोगी नहीं रहा है क्योंकि वे इसे "इरादे के रूप में काम करते हैं।"


मैं इसके लिए हर जगह googled। उत्तर में से कोई भी जवाब मेरे लिए तब तक काम नहीं करता जब तक कि मैं 1 दोस्त से मुलाकात नहीं करता जिसने मुझे अपने प्रोजेक्ट फ़ोल्डर को डेस्कटॉप पर ले जाने के लिए कहा था। यह सिर्फ स्वचालित रूप से काम किया। जाहिर है अगर आपके पास कई फ़ोल्डर में गहराई से फ़ोल्डर प्रोजेक्ट है, तो XCODE वास्तव में टूट जाता है।


मैंने इस मुद्दे को हल किया क्योंकि मैं सवाल लिख रहा था। मैंने सोचा कि मैं अपने प्रश्न का उत्तर दूंगा और इसे किसी और के लिए यहां छोड़ दूंगा जो Xcode 6 beta 4 का उपयोग करते समय इस समस्या का सामना कर सकता है।

इस समस्या को हल करने के लिए, आपको स्टोरीबोर्ड में अपनी प्रत्येक कस्टम क्लास ऑब्जेक्ट्स को चुनने की आवश्यकता है (इसमें कोई भी कस्टम दृश्य, यहां तक ​​कि कस्टम व्यू कंट्रोलर भी शामिल हैं)।

फिर चयनित वस्तुओं के साथ, पहचान निरीक्षक खोलें और "कस्टम क्लास" के तहत आपको मॉड्यूल विकल्प देखना चाहिए। मॉड्यूल टेक्स्ट बॉक्स के अंदर क्लिक करें, और एंटर दबाएं।

बस! मेरी सभी कस्टम ऑब्जेक्ट्स के लिए वर्तमान मॉड्यूल को आंतरिक रूप से गलत तरीके से गलत तरीके से एक्सकोड 6 बीटा 4 में सेट किया जाना चाहिए था। लेकिन इंस्पेक्टर में इसका कोई दृश्य संकेत नहीं था।

ध्यान दें कि यदि मॉड्यूल टेक्स्ट बॉक्स के अंदर एंटर दबाकर काम नहीं करता है, तो दाईं ओर तीर का चयन करने का प्रयास करें और मैन्युअल रूप से अपने वर्तमान मॉड्यूल का चयन करें, फिर टेक्स्ट बॉक्स को साफ़ करें और एंटर दबाएं। आप क्लास टेक्स्ट बॉक्स के अंदर एंटर दबाकर भी कोशिश कर सकते हैं (हालांकि यह आमतौर पर एक अलग समस्या को हल करने के लिए होता है)।

चीजों को और स्पष्ट करने के लिए यहां एक छवि दी गई है:


मैंने इसे ठीक किया कि चिकाबुज़ ने क्या सुझाव दिया है (हालांकि इसे इंगित करने के लिए धन्यवाद)। स्टोरीबोर्ड फ़ाइल में, इसे ढूंढें:

<viewController storyboardIdentifier="StoryboardId" id="SomeID" customClass="CustomClass" customModule="AppName" customModuleProvider="target" sceneMemberID="viewController">

और इसे इसके साथ बदलें:

<viewController storyboardIdentifier="StoryboardId" id="SomeID" customClass="CustomClass" sceneMemberID="viewController">

मैं विश्वास नहीं कर सकता कि स्विफ्ट कंपाइलर और एक्सकोड 6 में कितने घंटे मैं बग्स के आसपास हो रहा हूं


मैंने सभी दृश्य नियंत्रक और विचारों के लिए पहचान निरीक्षक की कस्टम कक्षा में मॉड्यूल नाम (दुर्भाग्य से ड्रॉप सूची कुछ भी नहीं दिखाएगी ...) में टाइप करके इस समस्या को हल किया।

आपको लक्ष्य प्रदाता को इंगित करने की भी आवश्यकता हो सकती है। इस उद्देश्य को प्राप्त करने के लिए आप स्टोरीबोर्ड को स्रोत कोड मोड में खोल सकते हैं और व्यू कंट्रोलर और "कोण ब्रैकेट दोनों में" customModuleProvider "विशेषता जोड़ सकते हैं।


यह 6.0 से ऊपर किसी भी एक्सकोड में हो सकता है। स्विफ्ट प्रोजेक्ट में कुछ व्यू कंट्रोलर कक्षाओं का नाम बदलने के बाद यह हुआ (लेकिन मुझे लगता है कि यह ओबज-सी के साथ भी होगा)। आपको बस इंटरफ़ेस बिल्डर खोलना है, व्यू कंट्रोलर की पहचान निरीक्षक पर जाएं, जिसकी कक्षा का नाम बदल गया है, कक्षा का चयन करें और एंटर दबाएं। वह नामित क्लास को चयनित व्यू कंट्रोलर को फिर से सौंपेगा और कक्षा का नाम बदलने के बाद खोए गए मॉड्यूल वैल्यू को भी रीसेट करेगा।

एक्सकोड 8.1 (शायद 8.0 भी) के लिए अद्यतन करें:

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


ये कदम मेरे लिए काम करते हैं।

1) व्युत्पन्न डेटा साफ़ करें।
2) .h और .m फ़ाइलों को हटा दें
3) फिर से .h और .m फ़ाइलें बनाएँ


समाधान मेरे लिए अलग था। आपको लक्ष्य के निर्माण चरण संकलित स्रोतों में कक्षा के .m को जोड़ने की आवश्यकता है।

उम्मीद है की यह मदद करेगा!





uistoryboard