এক্সকোডে "পূর্বশর্ত ব্যর্থতা" কীভাবে ডিবাগ করবেন?


9

আমি এক্সকোড ১১-এ একটি সুইফটুইআই অ্যাপ্লিকেশন তৈরি করছি তবে আমি যখনই অ্যাপ্লিকেশনটিতে কোনও নির্দিষ্ট ট্যাবে স্যুইচ করব ততক্ষনে অবসান ঘটছে।

কথাটি হ'ল এটি সর্বদা Application Delegateফাইলটির দিকে নির্দেশ করে যা আমার মনে হয় আসলে সমস্যাটি নয়। আমি কনসোলেও এই ত্রুটিটি পেয়ে যাচ্ছি এবং precondition failure: invalid input index: 2এটি হ'ল এই ত্রুটিটি কোন ফাইল, অ্যারে বা ফাংশনটি নিয়ে আসছে তার কোনও অতিরিক্ত বিবরণ নেই।

এখানে চিত্র বর্ণনা লিখুন

এক্সকোডে বিচ্ছিন্ন হওয়ার কোনও উপায় আছে যা এই সমস্যা তৈরি করছে?


কনসোলে প্রদর্শিত কি মুদ্রণ? দেখে মনে হচ্ছে রেঞ্জের ত্রুটির বাইরে কোনও সূচক থাকতে পারে। আপনার গন্তব্য দেখার নিয়ামকটিতে আপনার থাকতে পারে এমন কোনও অ্যারে পরীক্ষা করে দেখুন। অথবা কেবলমাত্র আপনি যে ট্যাবটি দিয়ে নেভিগেট করছেন সেই ভিউকন্ট্রোলারটি আরম্ভ করা হয়েছে এবং ট্যাবকন্ট্রোলআরভিউকন্ট্রোলার অ্যারেতে পরীক্ষা করুন।
আলেকজান্ডার

হাই হাই আলেক্সান্দার, আরম্ভের জন্য, আমি নিশ্চিত আমার মতামতগুলি সঠিকভাবে শুরু হয়েছে। এবং হ্যাঁ, আমি এটিও একটি অ্যারে সমস্যা ভাবছি, তবে আমি জানি না কোন অ্যারে কোন ফাংশন এবং কোন শ্রেণীতে, কারণ এই দৃশ্যটি এবং এর সংক্ষিপ্তসারগুলি অ্যারেতে পূর্ণ। এজন্য আমি কীভাবে সঠিকভাবে ডিবাগ করব তা জানতে চাই। বর্তমানে, আমি আমার কোডটিতে অনেকগুলি পরিবর্তন করার চেষ্টা করছি, এই আশায় যে আমি কোনও ফিক্স (এমনকি অজান্তেই) আঘাত করব।
ধূসর

আমি এটি পেয়ে যাচ্ছি, খুব অনুরূপ পরিস্থিতিতে। আমার জন্য, অ্যাপ্লিকেশানটি একই ত্রুটি এবং ডিবাগ কনসোল আউটপুট দিয়ে ক্র্যাশ করেছে। এটি একটি সি ++ পূর্বশর্ত ব্যর্থতা বলে মনে হচ্ছে (সুতরাং সুইফ্টের মধ্যেই - তাই ব্রেকপয়েন্টের সাহায্যে কাজ করে না)। আমার জন্য, জ্যামিতিপ্রক্সির আকারটি অ্যাক্সেস করার চেষ্টা করার সময় এটি ঘটে।
ড্যানিয়েল থর্প

এখানে একই - একটি অনুলিপি করতে জ্যামিতি @Binding
প্রক্সির

আমার কাছে ঘটে স্ট্যাকের পরবর্তী কলটি হল জ্যামিতিপ্রক্সি.সাইজ.জিটার () তবে এটি কেবল তখনই ঘটে যখন আমি একটি নির্দিষ্ট ক্রমে সুইফটইউআই ট্যাবগুলি অ্যাক্সেস করি। জ্যামিতিরিডার কেবলমাত্র সেই ট্যাবে ব্যবহৃত হয় যা ক্র্যাশ ঘটায়, (ক্র্যাশ কেবল তখনই ঘটে যখন সেই ট্যাবটি তৃতীয়টি অ্যাক্সেস করা হয়)।
তারাশিস

উত্তর:


10

আমার একটি ট্যাবভিউ ছিল যা একটি ভিউযুক্ত একটি তালিকা ব্যবহার করেছিল। ট্যাবগুলি স্যুইচ করার সময়, আমার অ্যাপ্লিকেশনটি একই ধরণের ত্রুটির সাথে ক্র্যাশ করছিল: "পূর্ব শর্ত ব্যর্থতা: বৈশিষ্ট্যটি একটি প্রাথমিক মান নির্ধারণ করতে ব্যর্থ হয়েছিল: 99" এই ক্র্যাশ হয়েছে:

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

একটি নেভিগেশনভিউতে তালিকার ভিউ মোড়ানো ক্র্যাশটিকে স্থির করে। কালেব ওয়েলসের "সুইফট লাইভ - 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)। ♂️‍♂️
পালিমন্ডো

1
এটি কাজ করে, তবে এটি আদর্শ নয়। আমি নেভিগেশন ভিউ চাই না।
ইমথাথ

আমার কাস্টম ভিউয়ের নেভিগেশনভিউতে ইতিমধ্যে তালিকা রয়েছে। আমি যা করেছি তা হ'ল আমি আমার কাস্টম ভিউ থেকে নেভিগেশনভিউটি সরিয়েছি এবং উপরে বর্ণিত হিসাবে এটি যুক্ত করেছি। পরিবর্তনের পরে ক্র্যাশটি চলে যায়।
স্টিফান ভাসিলজেভিচ 19

@ প্যালিমন্ডো আমার ধারণা এটি -100 হওয়া উচিত -60 নয়। সংশোধন করার জন্য ধন্যবাদ
PaFi

@ ইমথথ আমি আপনার সাথে একমত
ক্যাগাতায়
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.