#swift #firebase #google-cloud-firestore
#swift #firebase #google-облако-firestore
Вопрос:
Я работаю над программированием на swift, но каждый раз, когда я запускаю свое приложение, оно внезапно начинает сбоить. Сообщение об ошибке, которое я получил, было
Поток 1: Исключение: «ОШИБКА ВНУТРЕННЕГО УТВЕРЖДЕНИЯ FIRESTORE: неверная ссылка на документ. Ссылки на документы должны содержать четное количество сегментов, но NewGame имеет 1»
Я искал ошибку, и люди говорят, что если у меня есть несколько коллекций и документов в db, это имеет тенденцию происходить. Но моя база данных действительно проста. только две коллекции, и внутри них у меня есть документы. Нравится это изображение.
Когда я нажимаю кнопку bar, приложение завершает работу, которая представляет собой эти строки кода.
@IBAction func addPressed(_ sender: UIBarButtonItem) {
performSegue(withIdentifier: K.homeToGameScreen, sender: self)
// create new game array in db amp; 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. Вы вообще нашли выход?
Ответ №1:
Проблема почти наверняка в том, что self.docId
на момент его использования это nil или пустая строка, что не позволяет создать сегмент пути для кода, который создает DocumentReference . Мы не можем видеть, как вы его назначили или даже где оно определено, поэтому вам придется отладить это и выяснить, почему оно не имеет ожидаемого значения.
Комментарии:
1. Я столкнулся с аналогичной ситуацией, когда мне нужно сохранить информацию о пользователе, как только регистрируется новый пользователь. Итак, каково общее решение, чтобы убедиться, что идентификатор документа не является пустым или нулевым?