“FIRESTORE INTERNAL ASSERTION FAILED : 유효하지 않은 문서 참조. 문서 참조에는 짝수의 세그먼트가 있어야하지만 NewGame에는 1”이 있습니다.
Aug 18 2020
빠른 프로그래밍 작업을하고 있지만 앱을 실행할 때마다 갑자기 충돌이 시작됩니다. 내가받은 오류 메시지는
스레드 1 : 예외 : "FIRESTORE INTERNAL ASSERTION FAILED : 유효하지 않은 문서 참조. 문서 참조에는 짝수의 세그먼트가 있어야하지만 NewGame에는 1이 있습니다."
나는 오류를 검색했고 사람들은 DB에 여러 컬렉션과 문서가 있으면 발생하는 경향이 있다고 말합니다. 하지만 내 DB는 정말 간단합니다. 컬렉션이 두 개 뿐이고 그 안에 문서가 있습니다. 이 이미지처럼.
![](https://post.nghiatu.com/assets/images/s/fIoi0.png)
막대 버튼을 누르면 앱이 충돌합니다.이 코드 줄입니다.
@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
nil 또는 빈 문자열이므로 DocumentReference를 빌드하는 코드에 대한 경로 세그먼트를 만들 수 없습니다. 할당 방법이나 정의 된 위치를 볼 수 없으므로이를 디버그하고 예상 한 값이없는 이유를 파악해야합니다.