"İTFAİYE DAHİLİ DEĞERLENDİRME BAŞARISIZ: Geçersiz belge referansı. Belge referanslarında çift sayıda bölüm bulunmalıdır, ancak NewGame'de 1 ”

Aug 18 2020

Hızlı programlama üzerinde çalışıyorum ama uygulamamı her çalıştırdığımda aniden çökmeye başlıyor. Aldığım hata mesajı

Konu 1: İstisna: "FIRESTORE INTERNAL ASSERTION FAILED: Geçersiz belge referansı. Belge referanslarında çift sayıda segment olması gerekir, ancak NewGame'de 1"

Hatayı araştırdım ve insanlar db'de birkaç koleksiyonum ve belgem varsa, olma eğiliminde olduğunu söylüyorlar. Ama veritabanım gerçekten çok basit. sadece iki koleksiyon ve bunların içinde belgelerim var. Bu görüntü gibi.

Bir çubuk düğmesine dokunduğumda uygulama çöküyor, bu kod satırları.

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

Yukarıdaki kod HomeViewController adında bir şeyde, ancak AppDelegate.swift dosyasında her zaman hata alıyorum.

Lütfen kimse bana burada neler olup bittiğini ve bunu nasıl düzeltebileceğimi söyleyebilir mi?

Yanıtlar

1 DougStevenson Aug 18 2020 at 19:04

Sorun şu ki self.docId, kullanıldığı anda sıfır veya boş dizedir, bu da DocumentReference'ı oluşturan kod için bir yol parçası oluşturmasını engeller. Onu nasıl atadığınızı veya nerede tanımlandığını göremiyoruz, bu yüzden bu hatayı ayıklamanız ve neden beklediğiniz değere sahip olmadığını anlamanız gerekir.