2015-12-30 10 views
5

मेरे तेज एप्लिकेशन कुछ घातक त्रुटियों फेंक रखता है:स्विफ्ट त्रुटियों फेंकने रहता है, बाहर नहीं मिल सकता है क्यों

fatal error: unexpectedly found nil while unwrapping an Optional value 

केवल समस्या यह है मैं कोड का क्या लाइन इस त्रुटि का कारण बनता है पता लगाने के लिए नहीं कर पा रहे। क्या इस त्रुटि के कारण कोड की रेखा देखने का कोई तरीका है?

परियोजना यहां अपलोड करने के लिए बहुत बड़ी है, इसलिए यह एकमात्र चीज है जो मैं कर सकता हूं।

सादर, लुका Panjer

+0

शायद अपने एक्सकोड को पुनरारंभ करने का प्रयास करें। कहा जा रहा है, असुरक्षित unwrapping से बचें। हमेशा 'अगर myVar = myVar {..} 'या' myVar? .myProp' दें 'का उपयोग करें। – tskulbru

+0

धन्यवाद, लेकिन मैंने पहले ही कोशिश की है। @tskulbru –

+0

@PhillipMills एक क्रैश (EXC_BAD_ACCESS) अपवाद नहीं है। –

उत्तर

2

Xcode आवेदन को रोकने और एक EXC_BAD_ACCESS त्रुटि के साथ संपादक में हमलावर लाइन प्रदर्शित करना चाहिए। एक्सकोड को पुनरारंभ करने के बारे में टिप्पणी शायद सबसे पहले समस्या निवारण चरण है, क्योंकि यह व्यवहार तब होता है जब आप अपवाद ब्रेकपॉइंट सेट करते हैं या नहीं (क्योंकि यह एक घातक, क्रैशिंग त्रुटि है, अपवाद नहीं है)। आप अपने मैक को पूरी तरह से पुनरारंभ करने का भी प्रयास कर सकते हैं। मेरे पास ऐसी स्थितियां थीं जहां एक्सकोड ने ठीक से व्यवहार नहीं किया जब तक कि मैंने अपने मैक को पूरी तरह से पुनरारंभ नहीं किया।

+0

मैं अपनी मैकबुक को पुनरारंभ करने का प्रयास करूंगा। एक्सकोड मुझे एक लाइन प्रदान करता है, यह यह है: 0x1002a476c <+44>: brk # 0x1 –

+0

ऐसा लगता है जैसे एक्सकोड खराब दिन है। यूआई यह प्राप्त करने वाली जानकारी को प्रतिबिंबित नहीं कर रहा है। यदि मैक पुनरारंभ करने में मदद नहीं करता है, तो कुछ अन्य सुझाव होंगे 1) स्वच्छ, फिर अपनी परियोजना का पुनर्निर्माण करें और पुनः प्रयास करें (क्लीन कमांड का उपयोग करके); और 2) एक्सकोड को पुनर्स्थापित करें (गधे में दर्द लेकिन आवश्यक हो सकता है)। –

+0

मैंने अभी अपनी मैकबुक को बरकरार रखा है, यह मदद नहीं करता है। मैं इसे साफ कर दूंगा। संपादित करें: सफाई या तो मदद नहीं करता है। मैं फिलहाल एक्सकोड को पुनर्स्थापित कर रहा हूं। –

0

आपको यह त्रुटि मिलती रहे हैं, तो ...

unexpectedly found nil while unwrapping an Optional value 

... तो अपने कोड में कहीं न कहीं आप बल unwrapping ! का उपयोग कर एक Optional मान रहे हैं। इस त्रुटि संदेश को प्रस्तुत करने के लगभग कोई अन्य कारण नहीं है।

इस त्रुटि का एक आम कारण @IBOutlet है जिसे ! के साथ घोषित किया गया है लेकिन इंटरफेस बिल्डर में सही ढंग से कनेक्ट नहीं है। मैं डिस्कनेक्ट कर दूंगा और फिर अपने प्रोजेक्ट में @IBOutlet एस के सभी को पुनः कनेक्ट करूँगा ताकि यह सुनिश्चित किया जा सके कि वे सही तरीके से जुड़े हुए हैं।

उसके अलावा, मैन्युअल if let या guard let, या कम से कम एक ब्रेकप्वाइंट का उपयोग कर सेट जहाँ आप एक ! का उपयोग बल-खोलने में कुछ और या तो इसे खोलने कोड के प्रत्येक पंक्ति के माध्यम से जाना है, ताकि आप सीमित कर सकते हैं जो बल unwrapped वैकल्पिक त्रुटि उत्पन्न कर रहा है।

एक कारण है कि ! को कभी-कभी "बैंग!" के रूप में जाना जाता है। यह चीजों को विस्फोट का कारण बनता है। और सिरदर्द। सिरदर्द के बहुत सारे।

+0

जरूरी नहीं है ... यह एक आउटलेट को संदर्भित करने के कारण हो सकता है जो अभी तक कनेक्ट नहीं हुआ है। नहीं "!" की आवश्यकता है। –

+0

एक आउटलेट जो अभी तक कनेक्ट नहीं हुआ है वह वैकल्पिक है जो लगभग हमेशा होता है! '@IBOutlet var लेबल में: UILabel!'। वास्तव में, इसे किसी के साथ चिह्नित किया जाना चाहिए? या! क्योंकि इसे घोषित किए जाने पर प्रारंभ नहीं किया जाता है। अगर इसे चिह्नित किया गया था? आपको इसे स्पष्ट रूप से अनचाहे करना होगा और संकलक अप्रत्याशित रूप से शून्य नहीं पाएगा (जब तक कि आप इसे बाद में अनचाहे बल नहीं देते!) –

+0

पर्याप्त मेला। मेरी गलती। –

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