Итак, у меня есть программа, которая при открытии ищет определенное c имя документа в определенной c коллекции (оба указаны) и, когда оно найдено, копирует имя документа и запускает слушателя . Если оно не находит имя документа через интервалы 5 x 5 секунд, приложение останавливается. По какой-то причине, когда я запускаю код, после первой проверки я получаю около тысячи записей этой ошибки:
[Firebase / Firestore] [I-FST000001] WriteStream (7ffcbec0eac8) Ошибка потока: ' Не найдено: нет документа для обновления:
Вот код, который я использую для вызова firestore:
let capturedCode: String? = "party"
.onAppear(perform: {
Timer.scheduledTimer(withTimeInterval: 5, repeats: true) { timer in
print("running code check sequence")
if let code = capturedCode {
calcCloud.checkSessionCode(code)
if env.doesCodeExist {
print("code found! applying to environment!")
env.currentSessionCode = code
calcCloud.watchCloudDataAndUpdate()
allClear(env: env)
timer.invalidate()
}
else if timerCycles < 5 {
timerCycles += 1
print("code not found, this is cycle \(timerCycles) of 5")
} else {
print("could not find document on firebase, now committing suicide")
let x = ""
let _ = Int(x)!
}
}
}
})
вот код, который я использую для проверки firebase:
func checkSessionCode(_ code: String) {
print("checkSessionCode running")
let docRef = self.env.db.collection(K.sessions).document(code)
docRef.getDocument { (document, error) in
if document!.exists {
print("Document data: \(document!.data())")
self.env.doesCodeExist = true
} else {
print("Document does not exist")
self.env.doesCodeExist = false
}
}
}
и вот код, который должен быть выполнен, если код найден и применен:
func watchCloudDataAndUpdate() {
env.db.collection(K.sessions).document(env.currentSessionCode!).addSnapshotListener { (documentSnapshot, error) in
guard let document = documentSnapshot else {
print("Error fetching snapshot: \(error!)")
return
}
guard let data = document.data() else {
print("Document data was empty.")
return
}
Где я go ошибся, и что это за ошибка ... спасибо заранее :)
РЕДАКТИРОВАТЬ: Для ясности кажется, что ошибки начинаются после того, как onAppear завершает выполнение ...