“FALLÓ LA ASERCIÓN INTERNA DE FIRESTORE: Referencia de documento no válida. Las referencias de documentos deben tener un número par de segmentos, pero NewGame tiene 1 "

Aug 18 2020

Estoy trabajando en una programación rápida, pero cada vez que ejecuto mi aplicación, de repente comienza a fallar. El mensaje de error que recibí fue

Subproceso 1: Excepción: "ERROR EN LA ASERCIÓN INTERNA DE FIRESTORE: Referencia de documento no válida. Las referencias de documento deben tener un número par de segmentos, pero NewGame tiene 1"

Busqué el error y la gente dice que si tengo varias colecciones y documentos en db, suele suceder. Pero mi db es realmente simple. solo dos colecciones y dentro de ellas tengo documentos. Como esta imagen.

Cuando toco un botón de la barra, la aplicación se bloquea, que son estas líneas de código.

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

el código anterior está en algo llamado HomeViewController, pero siempre obtengo un error en el archivo AppDelegate.swift.

¿Alguien podría decirme qué está pasando aquí y cómo solucionarlo, por favor?

Respuestas

1 DougStevenson Aug 18 2020 at 19:04

Es casi seguro que el problema es que self.docIdes una cadena vacía o nula en el momento en que se utiliza, lo que le impide crear un segmento de ruta para el código que está construyendo DocumentReference. No podemos ver cómo lo asignó o incluso dónde está definido, por lo que tendrá que depurar esto y averiguar por qué no tiene el valor que espera.