У меня возникла проблема с правильным наблюдением запроса Firebase в iOS-библиотеке. Проблема возникает только при обновлении приоритета на одном клиенте. Ниже приведен тестовый пример, демонстрирующий проблему, с которой я сталкиваюсь.Firebase iOS установить приоритет не обновлять запрос
Я хотел бы отметить, что ребенок учитывает определенный приоритет. countLabel
просто отображает количество детей с приоритетом «один». Существует кнопка, которая вызывает changePriority()
, чтобы сделать приоритет нового ребенка «два». Я ожидал, что countLabel
отобразит 0 (или уменьшится до нужного номера), но он не обновляется.
class ViewController: UIViewController {
let firebaseRoot = Firebase(url: "url goes here")
var newChild: Firebase?
@IBOutlet weak var countLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
firebaseRoot.queryEqualToPriority("one").observeEventType(FEventType.Value, withBlock: { (snapshot: FDataSnapshot!) -> Void in
self.countLabel.text = snapshot.childrenCount.description
})
newChild = firebaseRoot.childByAutoId()
newChild?.setValue(true, andPriority: "one")
}
@IBAction func changePriority() {
newChild?.setPriority("two", withCompletionBlock: { (error: NSError?, firebase: Firebase!) -> Void in
if (error == nil) {
NSLog("Priority updated to `two`")
} else {
NSLog("Error updating priority: %@", error!)
}
})
}
}
Важно отметить, что если я изменить приоритет этого ребенка с помощью другого клиента (или Vulcan), наблюдатель запрос отвечает правильно, а countLabel
покажет правильный номер.
Вы не указали здесь никаких обработчиков ошибок или обратных вызовов, чтобы убедиться, что операции успешны. Вероятно, клиентский опер не сможет обновить приоритет. – Kato
@ Kato, я использовал [Vulcan] (https://github.com/firebase/vulcan), чтобы проверить, правильно ли клиентский код обновляет сервер. Кроме того, на основе [Eventbase Firebase гарантирует] (https://www.firebase.com/docs/ios/guide/retrieving-data.html#section-guarantees), кажется, что слушатель должен срабатывать, даже если сервер еще не обновлены. Я думаю, что это может быть ошибкой с клиентом iOS и отправил его в поддержку Firebase. – Brad
@Kato Я обновил образец кода, чтобы использовать блок завершения при обновлении приоритета. Блок завершения вызывается без ошибок, и я все еще испытываю ту же проблему. – Brad