Come eseguire il debug di "errore di precondizione" in Xcode?


9

Sto costruendo un'app SwiftUI su Xcode 11 ma termina immediatamente ogni volta che passo a una scheda specifica nell'app.

Il fatto è che punta sempre al Application Delegatefile, che penso non sia proprio il problema. Ricevo anche questo errore nella console precondition failure: invalid input index: 2e basta, non ci sono ulteriori dettagli su quale file, array o funzione provenga da questo errore.

inserisci qui la descrizione dell'immagine

Esiste un modo per isolare in Xcode che sta causando questo problema?


Stampa cosa viene visualizzato nella console? Sembra che ci sia forse un errore di indice fuori intervallo. Controlla gli array che potresti avere sul controller della vista di destinazione. Oppure controlla che il ViewController che stai navigando con Tab sia inizializzato e nell'array tabController.viewControllers.
Alexander

Ciao @Alexander, per l'inizializzazione, sono sicuro che i miei punti di vista sono inizializzati correttamente. E sì, sto anche pensando che sia un problema di array, ma non so quale array in quale funzione e in quale classe, perché quella vista e le sue sottoview sono piene di array. Ecco perché voglio sapere come eseguire correttamente il debug. Attualmente, sto cercando di cambiare molte cose nel mio codice, sperando di trovare una soluzione (anche inconsapevolmente).
grigio

Sto ottenendo questo, in una situazione molto simile. Per me, l'app si arresta in modo anomalo con lo stesso errore e l'output della console di debug. Sembra essere un errore di precondizione C ++ (quindi all'interno di Swift stesso - quindi dal punto di interruzione non funziona). Per me, succede quando provo ad accedere alle dimensioni di un GeometryProxy.
Daniel Thorpe,

Lo stesso qui - accedendo alle dimensioni di GeometryProxy, da copiare in un@Binding
Grimxn

Mi succede. La prossima chiamata nello stack è GeometryProxy.size.getter () tuttavia si verifica solo se accedo alle schede SwiftUI in un certo ordine. GeometryReader viene utilizzato solo nella scheda che causa l'arresto anomalo (l'arresto si verifica solo se si accede a quella scheda per terza).
Tarasis,

Risposte:


10

Avevo un TabView contenente una vista che utilizzava un elenco. Quando si cambia scheda, la mia app si arrestava in modo anomalo con un errore simile: "errore condizione preliminare: l'attributo non è riuscito a impostare un valore iniziale: 99"

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

Il wrapping di ListView in NavigationView ha risolto il problema. Ho visto questo uso di NavigationView su "Swift Live - 007 SwiftUI TabView && List" di Caleb Wells . https://youtu.be/v1A1H1cQowI

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

Questo ha funzionato:

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

Ho avuto lo stesso errore con Formdentro a TabViewche era già dentro a NavigationView. Per ovviare allo schianto ho dovuto avvolgere Formun altro manichino NavigationViewe nasconderlo fuori dallo schermo .padding(.top, -60). 🤷‍♂️
Palimondo

1
funziona, ma non è l'ideale. Non voglio una vista di navigazione.
Sono il

La mia visualizzazione personalizzata aveva già un elenco in NavigationView. Quello che ho fatto è che ho rimosso NavigationView dalla mia visualizzazione personalizzata e l'ho aggiunto come sopra specificato. Dopo quel cambiamento, l'incidente è andato via.
Stefan Vasiljevic,

@Palimondo Penso che dovrebbe essere -100 e non -60. grazie per la correzione
PaFi

@Imthath sono d'accordo con te
Cagatay,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.