Xcode में "पूर्ववर्ती विफलता" को कैसे डिबग करें?


9

मैं Xcode 11 पर एक SwiftUI ऐप बना रहा हूं, लेकिन जब भी मैं ऐप में किसी विशेष टैब पर स्विच करता हूं, तो तुरंत समाप्त हो जाता है।

बात यह है, यह हमेशा Application Delegateफ़ाइल को इंगित करता है, जो मुझे लगता है कि वास्तव में समस्या नहीं है। मुझे यह त्रुटि कंसोल में भी मिल रही है precondition failure: invalid input index: 2और यही है, यह त्रुटि क्या फ़ाइल, सरणी या फ़ंक्शन पर कोई अतिरिक्त विवरण नहीं है।

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

क्या एक्सकोड को अलग करने का कोई तरीका है जो इस समस्या का कारण है?


कंसोल में प्रदर्शित किया गया प्रिंट करें ऐसा लगता है कि सीमा त्रुटि से बाहर एक सूचकांक है। अपने गंतव्य दृश्य नियंत्रक पर हो सकने वाली किसी भी सरण की जाँच करें। या बस जांचें कि ViewController आप टैब के साथ नेविगेट कर रहे हैं और tabController.viewControllers सरणी में आरंभीकृत किया गया है।
अलेक्जेंडर

हाय @Alexander, इनिशियलाइज़ेशन के लिए, मुझे यकीन है कि मेरे विचार ठीक से आरंभीकृत हैं। और हाँ, मैं यह भी सोच रहा हूं कि यह एक सरणी समस्या है, लेकिन मुझे नहीं पता कि कौन सा फंक्शन किस फंक्शन में और किस क्लास में है, क्योंकि वह व्यू और उसके सबव्यू एरे से भरे हुए हैं। इसलिए मैं जानना चाहता हूं कि कैसे ठीक से डिबग करें। वर्तमान में, मैं अपने कोड में कई चीजों को बदलने की कोशिश कर रहा हूं, उम्मीद है कि मैं एक फिक्स (यहां तक ​​कि अनजाने में) मारूंगा।
ग्रे

मैं यह कर रहा हूँ, एक समान स्थिति में। मेरे लिए, ऐप एक ही त्रुटि और डीबग कंसोल आउटपुट के साथ क्रैश हो जाता है। यह C ++ प्रीकॉन्डिशन फेलियर प्रतीत होता है (इसलिए स्विफ्ट के भीतर - इसलिए ब्रेकपाइंट से काम नहीं होता है)। मेरे लिए, यह तब होता है जब एक ज्यामितिप्रॉक्सी के आकार तक पहुंचने की कोशिश की जाती है।
डैनियल थोर्प

यहाँ समान - ज्योमेट्रीप्रॉक्सी के आकार तक पहुंचना, एक कॉपी करने के लिए@Binding
ग्रिमैक्स

मुझे होता है। स्टैक में अगली कॉल ज्योमेट्रीप्रॉसी.साइज.गेटर () है लेकिन यह केवल मेरे लिए होता है अगर मैं एक निश्चित क्रम में स्विफ्टयूआई टैब का उपयोग करता हूं। GeometryReader का उपयोग केवल उस टैब में किया जाता है जो क्रैश का कारण बनता है, (क्रैश केवल तब होता है जब उस टैब को तीसरा एक्सेस किया जाता है)।
टारसिस

जवाबों:


11

मेरे पास एक टैब दृश्य था जिसमें एक सूची का उपयोग किया गया था। टैब स्विच करते समय, मेरा ऐप एक समान त्रुटि के साथ क्रैश हो रहा था: "पूर्व शर्त विफलता: प्रारंभिक मूल्य सेट करने में विशेषता विफल रही: 99" यह क्रैश हो गया:

var body: some View {
    TabView {
        ListView()
        .tabItem {
            Image(systemName: "list.dash")
            Text("List")
        }

किसी नेविगेशन दृश्य में ListView रैपिंग ने दुर्घटना को ठीक कर दिया। मैंने सेलेब वेल्स द्वारा "स्विफ्ट लाइव - 007 स्विफ्टयूआई टैब व्यू और& सूची" पर नेविगेशनव्यू का यह उपयोग देखा । https://youtu.be/v1A1H1cQowI

https://github.com/calebrwells/A-Swiftly-Tilting-Planet/tree/master/2019/Live%20Streams/TabView%20List

यह काम किया:

var body: some View {
    TabView {
        NavigationView { ListView() }
        .tabItem {
            Image(systemName: "list.dash")
            Text("List")
        }

मेरे Formअंदर वही त्रुटि TabViewथी जो पहले से ही अंदर थी NavigationView। दुर्घटना के इर्द-गिर्द काम करने के लिए मुझे Formएक और डमी में लपेटना पड़ा NavigationViewऔर इसे ऑफ स्क्रीन छिपाना पड़ा .padding(.top, -60)। Pal🤷25
पालीमोंडो

1
यह काम करता है, लेकिन यह आदर्श नहीं है। मुझे नेविगेशन दृश्य नहीं चाहिए।
इत्मीनान

मेरे कस्टम दृश्य में पहले से ही नेविगेशन दृश्य में सूची थी। मैंने जो किया वह मैंने अपने कस्टम दृश्य से नेविगेशन दृश्य को हटा दिया है और इसे जोड़ा है जैसा कि आपने ऊपर निर्दिष्ट किया है। उस बदलाव के बाद, दुर्घटना दूर हो गई।
स्टीफन वासिलजेविक

@Palimondo मुझे लगता है कि यह -100 और -60 नहीं होना चाहिए। तय करने के लिए धन्यवाद
16

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