Bagaimana cara debug "kegagalan prakondisi" di Xcode?

9

Saya sedang membangun Aplikasi SwiftUI di Xcode 11 tetapi segera berakhir setiap kali saya beralih ke tab tertentu di aplikasi.

Masalahnya, selalu menunjuk ke Application Delegatefile, yang saya pikir bukan masalah. Saya juga mendapatkan kesalahan ini di konsol precondition failure: invalid input index: 2dan hanya itu, tidak ada lagi detail tambahan tentang apa file, array, atau fungsi dari kesalahan ini.

masukkan deskripsi gambar di sini

Apakah ada cara di Xcode untuk mengisolasi yang menyebabkan masalah ini?

Abu-abu
sumber
Cetak apa yang ditampilkan di konsol? Sepertinya mungkin ada indeks di luar rentang kesalahan. Periksa semua array yang mungkin Anda miliki di controller tampilan tujuan Anda. Atau cukup periksa bahwa ViewController yang Anda navigasikan dengan Tab diinisialisasi dan di array tabController.viewControllers.
Alexander
Hai @Alexander, untuk inisialisasi, saya yakin pandangan saya diinisialisasi dengan benar. Dan ya, saya juga berpikir itu adalah masalah array, tapi saya tidak tahu mana array di mana fungsi dan di kelas mana, karena pandangan itu dan subview yang diisi dengan array. Itu sebabnya saya ingin tahu cara men-debug dengan benar. Saat ini, saya mencoba mengubah banyak hal dalam kode saya, berharap saya mendapatkan perbaikan (bahkan tanpa sadar).
abu
Saya mendapatkan ini, dalam situasi yang sangat mirip. Bagi saya, aplikasi macet dengan kesalahan yang sama dan keluaran konsol debug. Tampaknya merupakan kegagalan prasyarat C ++ (jadi di dalam Swift itu sendiri - oleh karena itu breakpoint tidak berfungsi). Bagi saya, itu terjadi ketika mencoba mengakses ukuran GeometryProxy.
Daniel Thorpe
Sama di sini - mengakses ukuran GeometryProxy, untuk menyalin ke@Binding
Grimxn
Terjadi pada saya untuk. Panggilan berikutnya dalam stack adalah GeometryProxy.size.getter () namun itu hanya terjadi pada saya jika saya mengakses tab SwiftUI dalam urutan tertentu. GeometryReader hanya digunakan di tab yang menyebabkan crash, (Crash hanya terjadi jika tab itu diakses ketiga).
tarasis

Jawaban:

10

Saya memiliki TabView yang berisi tampilan yang menggunakan Daftar. Saat beralih tab, aplikasi saya mogok dengan kesalahan yang sama: "kegagalan prakondisi: atribut gagal menetapkan nilai awal: 99" Ini macet:

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

Membungkus ListView dalam NavigationView memperbaiki kerusakan. Saya melihat penggunaan NavigationView ini di "Swift Live - 007 SwiftUI TabView && List" oleh Caleb Wells . https://youtu.be/v1A1H1cQowI

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

Ini berhasil:

var body: some View {
    TabView {
        NavigationView { ListView() }
        .tabItem {
            Image(systemName: "list.dash")
            Text("List")
        }
beepcore
sumber
Saya memiliki kesalahan yang sama dengan Formdi dalam TabViewyang sudah ada di dalam NavigationView. Untuk mengatasi crash, saya harus membungkus Formboneka lain NavigationViewdan menyembunyikannya di luar layar .padding(.top, -60). 🤷‍♂️
Palimondo
1
ini bekerja, tetapi itu tidak ideal. Saya tidak ingin tampilan navigasi.
Imthath
Tampilan Kustom Saya sudah memiliki Daftar di NavigationView. Apa yang saya lakukan adalah saya menghapus NavigationView dari Tampilan Kustom saya dan menambahkannya seperti yang Anda tentukan di atas. Setelah perubahan itu, kecelakaan itu hilang.
Stefan Vasiljevic
@Palimondo Saya pikir seharusnya -100 dan bukan -60. terima kasih untuk perbaikannya
PaFi
@ Imthath Saya setuju dengan Anda
Cagatay