"ASSERZIONE INTERNA FIRESTORE NON RIUSCITA: Riferimento documento non valido. I riferimenti ai documenti devono avere un numero pari di segmenti, ma NewGame ha 1 "

Aug 18 2020

Sto lavorando alla programmazione rapida, ma ogni volta che eseguo la mia app, improvvisamente inizia a bloccarsi. Il messaggio di errore che ho ricevuto è stato

Discussione 1: Eccezione: "ASSERZIONE INTERNA FIRESTORE NON RIUSCITA: Riferimento documento non valido. I riferimenti al documento devono avere un numero pari di segmenti, ma NewGame ne ha 1"

Ho cercato l'errore e le persone dicono che se ho diverse raccolte e documenti in db, tende a succedere. Ma il mio db è davvero semplice. solo due collezioni e al loro interno ho documenti. Come questa immagine.

Quando tocco un pulsante della barra, l'app si arresta in modo anomalo, ovvero queste righe di codice.

@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")
                    }
                }
            }
    }
}

il codice sopra si trova in qualcosa chiamato HomeViewController, ma ottengo sempre un errore nel file AppDelegate.swift.

Qualcuno potrebbe dirmi cosa sta succedendo qui e come risolverlo per favore?

Risposte

1 DougStevenson Aug 18 2020 at 19:04

Il problema è quasi certamente che self.docIdè una stringa nulla o vuota al momento in cui viene utilizzato, il che impedisce di creare un segmento di percorso per il codice che sta costruendo DocumentReference. Non possiamo vedere come lo hai assegnato o anche dove è definito, quindi dovrai eseguire il debug e capire perché non ha il valore che ti aspetti.