Я использую firebase с приложением, запущенным в автономном режиме, когда я подписываюсь на дочерние значения некоторого узла, обратный вызов из observe*(_:,withBlock:)
не срабатывает (ни для начальных значений, ни для изменений). Подписки на прямые значения (без детей) работают нормально. Взгляните на фрагмент:
let database = FIRDatabase.database()
database.reference().keepSynced(true)
let databaseRef = database.reference()
database.goOffline()
databaseRef.child("user").setValue("user1")
let userKey = databaseRef.child("usr").childByAutoId().key
let userValues = ["uid": "uid",
"name" : "name",
"surname" : "surname"]
databaseRef.child("/usr/\(userKey)/").setValue(userValues)
//1
databaseRef.child("user").observeSingleEventOfType(.Value, withBlock:{ snap in
print("works")
})
//2
databaseRef.child("usr").observeSingleEventOfType(.Value, withBlock:{ snap in
print("doesnt work")
})
//3
databaseRef.child("usr/\(userKey)/uid").observeSingleEventOfType(.Value, withBlock:{ snap in
print("works")
})`
подписки 1 и 2 работают нормально, но подписка 2 не сработает, пока хотя бы один раз база данных не будет подключена к сети. С момента синхронизации базы данных с удаленным я могу выйти в автономный режим, и все работает как надо. Кто-нибудь знает, как справиться с этой проблемой?
observe
и скрываю это представление, как только попадаю в закрытие. Как я могу остановить загрузку, если закрытие никогда не срабатывает? 21.02.2017