«ÉCHEC DE L'ASSERTION INTERNE FIRESTORE: référence de document non valide. Les références de document doivent avoir un nombre pair de segments, mais NewGame en a 1 "
Je travaille sur une programmation rapide, mais chaque fois que je lance mon application, elle commence soudainement à planter. Le message d'erreur que j'ai reçu était
Thread 1: Exception: "FIRESTORE INTERNAL ASSERTION FAILED: Référence de document non valide. Les références de document doivent avoir un nombre pair de segments, mais NewGame en a 1"
J'ai recherché l'erreur et les gens disent que si j'ai plusieurs collections et documents dans db, cela a tendance à se produire. Mais ma base de données est vraiment simple. seulement deux collections et à l'intérieur d'elles j'ai des documents. Comme cette image.
Lorsque j'appuie sur un bouton de barre, l'application se bloque, ce qui correspond à ces lignes de code.
@IBAction func addPressed(_ sender: UIBarButtonItem) {
performSegue(withIdentifier: K.homeToGameScreen, sender: self)
// create new game array in db & player's ready status -> true
db.collection(K.FStore.newGameCollection)
.addDocument(data: [K.FStore.gameBoardField: GameBoard.gameBoard, K.FStore.player1Field: playerInfo[K.FStore.nameField]!, K.FStore.player2Field: K.FStore.player2Field, K.FStore.uID: playerInfo[K.FStore.uID]!]) { (err) in
if let err = err {
print("Error getting documents3: \(err)")
} else {
self.db.collection(K.FStore.playersCollection).document(self.docId).updateData([K.FStore.isReadyField: true]){ err in
if let err = err {
print("Error updating player's isReady status: \(err)")
} else {
print("Document successfully updated")
}
}
}
}
}
le code ci-dessus est dans quelque chose appelé HomeViewController, mais j'obtiens toujours une erreur dans le fichier AppDelegate.swift.
Quelqu'un pourrait-il me dire ce qui se passe ici et comment résoudre ce problème?
Réponses
Le problème est presque certainement qu'il self.docId
s'agit d'une chaîne nulle ou vide au moment de son utilisation, ce qui l'empêche de créer un segment de chemin pour le code qui construit le DocumentReference. Nous ne pouvons pas voir comment vous l'avez attribué ni même où il est défini, vous devrez donc le déboguer et comprendre pourquoi il n'a pas la valeur que vous attendez.