«FIRESTORE INTERNAL ASSERTION FAILED: Недействительная ссылка на документ. Ссылки на документы должны содержать четное количество сегментов, а в NewGame - 1 ".

Aug 18 2020

Я работаю над быстрым программированием, но каждый раз, когда я запускаю свое приложение, оно внезапно начинает давать сбой. Я получил сообщение об ошибке

Тема 1: Исключение: «FIRESTORE INTERNAL ASSERTION FAILED: Недействительная ссылка на документ. Ссылки на документы должны иметь четное количество сегментов, но NewGame имеет 1»

Я искал ошибку, и люди говорят, что если у меня есть несколько коллекций и документов в db, это имеет место. Но мой БД действительно прост. всего две коллекции и внутри у меня документы. Как это изображение.

Когда я нажимаю кнопку на панели, приложение аварийно завершает работу, а именно эти строки кода.

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

приведенный выше код находится в том, что называется HomeViewController, но я всегда получаю ошибку в файле AppDelegate.swift.

Может ли кто-нибудь рассказать мне, что здесь происходит и как это исправить?

Ответы

1 DougStevenson Aug 18 2020 at 19:04

Проблема почти наверняка в том, что self.docIdв момент использования строка пуста или равна нулю, что не позволяет ей создать сегмент пути для кода, создающего DocumentReference. Мы не можем видеть, как вы его назначили или даже где это определено, поэтому вам придется отладить это и выяснить, почему он не имеет ожидаемого значения.