नया आउटलेट कनेक्शन सम्मिलित नहीं किया जा सका: नामांकित वर्ग के लिए कोई जानकारी नहीं मिल सकी


281

मुझे Xcode पर यह कहते हुए त्रुटि हुई कि दृश्य नियंत्रक के बारे में कोई जानकारी नहीं थी।

नया आउटलेट कनेक्शन सम्मिलित नहीं किया जा सका: नामांकित वर्ग के लिए कोई जानकारी नहीं मिल सकी

ये क्यों हो रहा है?

स्क्रीनशॉट 1


2
मुझे लगता है कि इससे पहले पूछा गया है: stackoverflow.com/questions/17735182/…
तपन

मैंने केवल Xcode को क्विट किया, फिर उसे ओपन किया। संकलक सभी फ़ाइलों को फिर से लोड करेगा और यह उस फ़ाइल का पता लगा सकता है जिसकी आप तलाश कर रहे हैं
जेन चिकन

जांचें कि आपके पास पहले से ही आपके व्यू कंट्रोलर फाइल में एक असंबद्ध आउटलेट नहीं है। मुझे पता चला कि मैंने किया। इसे हटाने के बाद मेरे पास कोई समस्या नहीं थी।
Kex

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

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

जवाबों:


692

यहाँ कुछ चीजें हैं जो इसे ठीक कर सकती हैं (कठिनाई के बढ़ते क्रम में):

  • परियोजना को साफ करें ( उत्पाद> स्वच्छ )
  • मैन्युअल रूप से पेस्ट करें

    @IBOutlet weak var viewName: UIView!
    // or
    @IBAction func viewTapped(_ sender: Any) { }

    और इसे करने के लिए खींचें नियंत्रण। (बदलें लिखते ही की जरूरत है।) यह भी देखें इस

  • पूरी तरह से Xcode बंद करें और अपने प्रोजेक्ट को पुनः आरंभ करें।

  • व्युत्पन्न डेटा फ़ोल्डर हटाएं ( Xcode> प्राथमिकताएं > स्थानों पर जाएं और Derived Data फ़ोल्डर द्वारा ग्रे तीर पर क्लिक करें। फिर अपना प्रोजेक्ट फ़ोल्डर हटाएं।)
  • क्लास पर डिलीट पर क्लिक करें, रेफरेंस हटाएं (मूव टू ट्रैश नहीं), और इसे फिर से जोड़ें। ( यह उत्तर देखें )

व्यू कंट्रोलर पर क्लास को हटाना न भूलें ताकि यह स्टेप काम करेगा
Reggie

8
इन चरणों में से किसी ने भी मेरे लिए Xcode 8.3.2 में काम नहीं किया। मुझे "आइडेंटिटी इंस्पेक्टर इंस्पेक्टर"> को "क्लास" फ़ील्ड को साफ़ करना था (कस्टम क्लास के नाम को हटाएं और हटाएं)> "क्लास" फ़ील्ड में क्लास का नाम फिर से दर्ज करें। Xcode ऑटो ने कक्षा का नाम पूरा किया। मैंने फिर एंट्री मारी।
PeqNP

alias purgederiveddata='rm -rf ~/Library/Developer/Xcode/DerivedData/*'एक कमांड purgederiveddataसे क्लियर करने के लिए कमांड का उपयोग करने के लिए अपने ~ / .bashrc में लाइन जोड़ें
eskimwier

मुझे इस मुद्दे को ठीक करने का एक और तरीका मिला, यह मेरे साथ तब हुआ जब मैंने अपनी बिल्ड स्पीड को बेहतर बनाने के लिए कुछ बिल्ड सेटिंग्स को बदल दिया। stackoverflow.com/a/50555888/2952876
माथियास वैन हूटे

मैं नीचे दिए गए मेरे समाधान के लिए आप सभी को दृढ़ता से प्रोत्साहित करूंगा। यह जानने के लिए आतुर होंगे कि लोग बग दिखाने के लिए अपने कंप्यूटर को फिर से चालू कर रहे हैं जो अक्सर दिखाता है।
स्टीफन पॉल

134

या यदि उपरोक्त में से कोई भी काम नहीं करता है, @IBOutlet weak var headerHeightConstraint: NSLayoutConstraint!तो पहले फ़ाइल में आउटलेट का नाम टाइप करें और फिर निब में आउटलेट से उस वेरिएबल पर क्लिक करें और खींचें, जिसे आपने प्रोग्राम बनाया है। यह किसी भी चीज को साफ करने, बनाने और हटाने की परेशानी के बिना काम करना चाहिए।


4
अक्सर सफाई, निर्माण, आदि के लिए उम्र बिताने के बजाय तेजी से समाधान धन्यवाद।
मोहनिश

1
बहुत अच्छा और एक बार जब आप ऐसा कर लेते हैं तो ऑटोमैटिक दिखाई देने लगता है, धन्यवाद।
अमेजा

1
सभी के मुट्ठी आपके XIB ऑब्जेक्ट को IBoutlets से कनेक्ट करते हैं। फिर अपने अवरोध IBOutlets को कनेक्ट करने का प्रयास करें। इसके बिना यह हमेशा त्रुटि दिखाएगा।
चंद्रमणि

यह एक अंतर भी कर सकता है जहां आप नए आउटलेट को सम्मिलित करने का प्रयास करते हैं। के लिए, सूची के शीर्ष (जहां ऊपर स्पष्ट स्थान है) ने काम किया; सूची के बीच में नहीं था।
रिचर्ड

1
इसे सर्वश्रेष्ठ उत्तर के रूप में चिह्नित किया जाना चाहिए। यह आसान, तेज और अधिक विश्वसनीय है। इसके अलावा यह हर समय काम करता है! अच्छी नौकरी और धन्यवाद @StephenPaul
denis_lor

51

इस त्रुटि से छुटकारा पाने के लिए बस दो चरणों का पालन करें

  1. उत्पाद> स्वच्छ का उपयोग कर स्वच्छ परियोजना
  2. प्रोजेक्ट चलाएं

अब क्रिया या आउटलेट को जोड़ने का प्रयास करें। बस।

हैप्पी कोडिंग


4
अजीब ... इस आसान दो कदमों ने मेरे लिए भी समस्या को हल करने में मदद की। तो मैं सलाह देता हूं, पहले इन आसान चरणों को आजमाने के लिए :-)
6

49

सबसे अच्छा जवाब में से कोई भी सुझाव मेरे लिए काम नहीं किया। पागल हो रहा था। फिर देखा कि असिस्टेंट एडिटर ने किसी तरह से मैनुअल में सेट किया था और मैं व्यूकंट्रोलर.स्विफ्ट ( फाइल ) के बजाय व्यूकंट्रोलर.स्विफ्ट (इंटरफेस) पर था ।

बदल दिया है कि और समस्या हल हो गई। थोड़ा शर्मनाक लेकिन अरे, हम सब सीख रहे हैं।

यहां छवि विवरण दर्ज करें


1
जीवन रक्षक जवाब! अन्य उत्तरों में से किसी ने भी इसे एक बार और हमेशा के लिए हल नहीं किया। बहुत बुरा है कि त्रुटि विवरण कम से कम संकेत नहीं देता है कि आप वर्जन फ़ाइल में हो सकते हैं। धन्यवाद। छवि के लिए +1 ने यह सब स्पष्ट कर दिया है।
पॉलोको

मैंने कुछ समान रूप से देखा, लेकिन अलग-अलग: शीर्ष पर उस पथ में जहां कक्षा का नाम प्रदर्शित किया गया था, वहां सिर्फ कक्षा का नाम था, लेकिन myProject> appName> नियंत्रक और फिर कक्षा के रूप में पथ की अनुपलब्धता। मैंने एक और वर्ग का चयन किया फिर समस्याग्रस्त एक पर, और सबकुछ ठीक है
क्लॉड 31

15

यहाँ मेरे लिए हल कदम हैं:

  1. दृश्य (स्टोरीबोर्ड / xib) से वर्ग नाम संदर्भ निकालें और सहेजें;
  2. फिर से क्लास का नाम जोड़ें और सहेजें;
  3. साफ और निर्माण;

किया हुआ !


10

मेरी भी यही समस्या थी। मैं नीचे दिए गए समाधानों से थक गया लेकिन काम नहीं किया:

  1. Clean Project (cmd + shift + k) और भी Clean Project Build (cmd + shift + alt + k)
  2. Deleted Derived data तथा Module Cache content

इस समस्या के नीचे समाधान:

  1. स्रोत कोड फ़ाइल पर जाएं और IBOutlet / IBActionमैन्युअल रूप से लिखें (कॉपी पेस्ट पसंदीदा)

स्क्रीनशॉट 1

  1. फिर स्टोरीबोर्ड फ़ाइल और ओपन Utilitesविंडो पर जाएं
  2. के लिए जाओ Connection Inspector
  3. फिर इंटरफ़ेस बिल्डर के साथ स्रोत फ़ाइल में लिखित IBOutletऔर कनेक्ट करें IBAction

स्क्रीनशॉट 2


ड्रैगिंग आउटलेट / कार्य बिल्कुल भी काम नहीं कर रहे थे, लेकिन मैंने इसे इस तरह मैन्युअल रूप से करने के बाद, सब कुछ फिर से ठीक से काम किया।
जेसन

यह कनेक्शन बनाने के लिए एक मानक वैकल्पिक तरीका है। रेडियो बटन क्रियाओं के मामले में, एकमात्र तरीका, AFAIK। स्टोरीबोर्ड में, आप नियंत्रक पर राइट क्लिक कर सकते हैं, फ़ंक्शन ढूंढ सकते हैं और कनेक्शन बना सकते हैं।
कर्ट

8

मुझे भी यही समस्या थी। एक्स-कोड Manualआइटम की तुलना में मुझे एहसास हुआ कि जब मैंने नियंत्रण-खींचकर एक आउटलेट बनाने की कोशिश की थी

यहां छवि विवरण दर्ज करें

के बाद मैंने इसे स्वचालित करने के लिए काम किया

यहां छवि विवरण दर्ज करें


मुझे यह सटीक समस्या थी। अंतर भी नहीं देखा।
जोशुआ डांस

महान!!! मैंने इस बग सफाई परियोजना के लिए बहुत समय खो दिया है, एक्सकोड को फिर से शुरू करना, व्युत्पन्न डेटा को हटाना, लेकिन यह केवल समाधान था जो मेरे लिए काम करता था! आपका बहुत बहुत धन्यवाद!
एंटोन एरेगिन

7

मैंने इस समस्या को प्रोग्रामेटिक रूप से Labels और Textfields बनाकर हल किया, और फिर कमांड के ड्रैग में कोड के बाईं ओर के छोटे खाली सर्कल से घटकों पर ले जाया गया। अपनी बात को स्पष्ट करने के लिए: मैंने लिखा @IBOutlet weak var HelloLabel: UILabel!, और फिर कमांड दबाया और कोड को स्टोरीबोर्ड पर घटक में खींच लिया।


यह समाधान मेरे लिए पूरी तरह से काम करता है! इसके अलावा @IBOutlet weak var myButton: UIButtonमैंने इसे स्थापित करने के लिए एक ही प्रक्रिया का उपयोग किया @IBAction func doSomething(_ sender: Any) { }और फिर इस कथानक को अपने स्टोरीबोर्ड पर UIButton से जोड़ा । इस @KuboAndTwoStrings
Nii Mantse

6
  1. उस प्रोजेक्ट को बंद करें जिस पर आप काम कर रहे हैं।
  2. अपने प्रोजेक्ट का your DerivedData project फ़ोल्डर हटाएं। (यह फ़ोल्डर आपके प्रोजेक्ट के फ़ोल्डर के अंदर, या
    ~/Library/Developer/Xcode/DerivedData/
    आपके (आपके प्रोजेक्ट) /) या कहीं और हो सकता है जो आपके द्वारा सेटअप किया गया था।
  3. अपने प्रोजेक्ट को पुनः आरंभ करें।

4

मुझे एक आसान समाधान मिला क्योंकि मैं इस बग को XCODE 9 पर पाया जा सकता है।

एक कदम अपने व्यू कंट्रौलर पर जाएं और मैन्युअल रूप से उस संपत्ति को लिखें जिसे आप नीचे दिए गए उदाहरण के रूप में कनेक्ट करना चाहते हैं, सुनिश्चित करें कि आप नीचे दिए गए प्रारूप का उपयोग करते हैं।

@IBOutlet कमजोर var questionsStackView: UIStackView!

चरण दो अपने स्टोरीबोर्ड पर जाएं और चरण 1 में आपके द्वारा बनाई गई संपत्ति से कनेक्ट करने के लिए अपना दृष्टिकोण या जो कुछ भी करने की कोशिश कर रहे हैं उसे कनेक्ट करें।

उपरोक्त आपको व्युत्पन्न डेटा को हटाने और साफ करने का समय बचाएगा।


3

मुझे यह बग तब मिला जब मैंने कक्षा का नाम बदला। फिर मैंने नीचे के चरणों का पालन करके इसे हल किया

  • Xcode मेनू में -> Product->Clean
  • Restart Xcode

यह केवल एक समाधान था जो मेरे लिए काफी मज़ेदार था।
जोसेफ एस्ट्राहन

2

मेरे मामले में यह bc था मैंने IB में एक नई UIViewController फाइल को चुना और फिर कनेक्शन निरीक्षक के पिछले कनेक्शनों को हटाए बिना इस नए नियंत्रक को ctrl-drag करने की कोशिश की। पहले उन को निकालें और फिर से प्रयास करें।


2

मेरे लिए यह तब काम आया जब दाहिने टैब पर> स्थानीयकरण, मैंने अंग्रेजी चेक बॉक्स चेक किया। शुरुआत में केवल आधार की जाँच की गई थी। उसके बाद मुझे और कोई समस्या नहीं थी। उम्मीद है की यह मदद करेगा!


2

यहां छवि विवरण दर्ज करें

मैंने ViewController.swift फ़ाइल का चयन करने के लिए स्वचालित विकल्प का चयन किया। और फिर मैं आउटलेट लेने में सक्षम हूं।


2

कृपया केवल इस त्रुटि से छुटकारा पाने के लिए निम्नलिखित दो चरण करें।

1.  Clean Project using Product -> clean.
2.  Run the Project.

अब क्रियाओं या आउटलेट्स को जोड़ने / जोड़ने का प्रयास करें।

मेरे लिए कई बार काम करना ठीक रहता है।


1

यह तब हुआ जब मैंने Swiftएक Objective-Cपरियोजना में एक फ़ाइल जोड़ी ।
तो, इस स्थिति में आप क्या कर सकते हैं। ।

  • Select MY_FILE.Swift >> Delete >> Remove Reference
  • Select MY_FOLDER >> Add MY_FILE.Swift
  • Voila ! You are good to go .

इसके लिए अप! मैं आधे घंटे पहले से ही इस समस्या को हल करने की कोशिश कर रहा हूं। स्टोरीबोर्ड में इस तरह की समस्याएं हालांकि ठीक करना आसान है। धन्यवाद! इसने मेरी बहुत मदद की!
ग्लेन

0

सबसे सरल समाधान: - मैंने xCode 7 और iOS 9 का उपयोग किया।

अपने में

# हटाएं "VC.h"

सहेजें .m और अपने आउटलेट को फिर से लिंक करें यह ठीक काम करता है।


0

मैंने xCode 7 और iOS 9 का उपयोग किया।

अपने में

हटाना #import "VC.h"

सहेजें .m और अपने आउटलेट को फिर से लिंक करें यह ठीक काम करता है।

अपने में

जोड़ना #import "VC.h"

बचाओ .m


0

इसमें से किसी ने भी मेरे लिए काम नहीं किया लेकिन मैंने इसका पता लगाया।

स्टोरीबोर्ड के अंदर मैंने संबंधित ViewController को क्लिपबोर्ड में कॉपी किया और इसे हटा दिया, बाद में मैंने इसे फिर से चिपकाया।

अचानक सब कुछ फिर से एक आकर्षण की तरह काम कर रहा था!

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.