“FIRESTORE INTERNAL ASSERTION FAILED : 유효하지 않은 문서 참조. 문서 참조에는 짝수의 세그먼트가 있어야하지만 NewGame에는 1”이 있습니다.

Aug 18 2020

빠른 프로그래밍 작업을하고 있지만 앱을 실행할 때마다 갑자기 충돌이 시작됩니다. 내가받은 오류 메시지는

스레드 1 : 예외 : "FIRESTORE INTERNAL ASSERTION FAILED : 유효하지 않은 문서 참조. 문서 참조에는 짝수의 세그먼트가 있어야하지만 NewGame에는 1이 있습니다."

나는 오류를 검색했고 사람들은 DB에 여러 컬렉션과 문서가 있으면 발생하는 경향이 있다고 말합니다. 하지만 내 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.docIdnil 또는 빈 문자열이므로 DocumentReference를 빌드하는 코드에 대한 경로 세그먼트를 만들 수 없습니다. 할당 방법이나 정의 된 위치를 볼 수 없으므로이를 디버그하고 예상 한 값이없는 이유를 파악해야합니다.