web-dev-qa-db-fra.com

SIGABRT: échec de la condition préalable: le noeud importé a été supprimé avant la lecture de sa valeur

Depuis le beta 5 de Xcode 11 lancé, j'ai dû mettre à jour le code. Vous connaissez le refrain. Cependant, il y a cette erreur d'exécution étrange qui survit aux changements, et je ne peux pas comprendre pourquoi cela se produit.

J'ai commencé à essayer de le coincer dans mon code d'origine, mais étonnamment, cela se produit également dans le projet de test le plus simple que j'ai réussi à créer: une TabView avec une table.

La procédure pour faire planter le simulateur Xs avec SIGABRT lors du passage à un autre onglet lors de l'exécution avec l'erreur:

"xxxxxxx [23089: 4642999] échec de la condition préalable: le noeud importé a été supprimé avant la lecture de sa valeur: 90"

Si l'utilisateur entre dans la vue détaillée en cliquant sur une ligne, celle-ci ne se bloque pas; exécutez simplement l'application et appuyez sur le deuxième onglet.

J'ai revu le bâtiment vue, l'objet ... rien. Il se bloque même lors du changement de l'affichage des lignes en un simple texte. J'ai également supprimé @Binding, etc. pour exclure Combine.

S'il vous plaît, faites-moi savoir si certains d'entre vous voient quelque chose. Il ne plante que dans la Bêta 5, pas dans la Bêta 2.

//  This file can be used in a new TabView app in Xcode 11 beta 5
//  ContentView.Swift


import SwiftUI


class TestObject : Identifiable, Hashable{

    let identifier: String


    init() {
        self.identifier = UUID().description
    }

    static func == (lhs: TestObject, rhs: TestObject) -> Bool {
        return lhs.identifier == rhs.identifier
    }

    func hash(into hasher: inout Hasher) {
        hasher.combine(identifier)
    }

}

struct RowView: View {
    let aTitle: String
    var body: some View {
        HStack {
            Spacer()
            Text(aTitle)
            Spacer()
        }
    }
}

struct DetailView: View {
    let aObject: TestObject
    var body: some View {
        VStack {
            Spacer()
            Text(aObject.identifier)
            Spacer()
        }
    }

}


struct ListNavegableNoBinding: View {
    var testObjects: [TestObject]
    var body: some View {
        NavigationView {
            List(testObjects, id: \.self) {
                someObject in
                NavigationLink(destination: DetailView(aObject: someObject)) {
                    RowView(aTitle: someObject.identifier)
                }
            }

        }
    }
}

struct ContentView: View {
    @State private var selection = 0

    var tests : [TestObject] = [
        TestObject(),
        TestObject(),
        TestObject()
    ]


    var body: some View {
        TabView(selection: $selection){

            VStack{
                Text("First View")
                    .font(.title)
                ListNavegableNoBinding(testObjects: tests)
            }
            .tabItem {
                VStack {
                    Image("first")
                    Text("First")
                }
            }
            .tag(0)

            Text("Second View")
                .font(.title)

                .tabItem {
                    VStack {
                        Image("second")
                        Text("Second")
                    }
            }
            .tag(1)

        }
    }
}

13
jpelayo

J'ai toujours ce problème sur Xcode 11 GM ... J'ai trois onglets, tous avec des listes à l'intérieur, et chaque fois que je change d'onglet en faisant défiler la vue actuelle, le crash SIGBART se produit.

0
KirinSoo

J'ai un TabView avec une liste à l'intérieur de chaque onglet, et mon application est totalement cassée maintenant. Il semble qu'il ait du mal à déréférencer le composant List. Nous devrons attendre, mais j'espère qu'un correctif sera disponible très bientôt.

0
riciloma

Situation similaire ici. Cependant, au lieu d'utiliser une liste, j'utilise le formulaire et cela semble provoquer cette erreur lorsque je tape de cet onglet vers un autre onglet ou vice versa. Des trucs bizarres, bizarres.

0
Osama Naeem