2014-10-17 4 views
0

У меня возникла проблема с правильным наблюдением запроса 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 покажет правильный номер.

+0

Вы не указали здесь никаких обработчиков ошибок или обратных вызовов, чтобы убедиться, что операции успешны. Вероятно, клиентский опер не сможет обновить приоритет. – Kato

+0

@ Kato, я использовал [Vulcan] (https://github.com/firebase/vulcan), чтобы проверить, правильно ли клиентский код обновляет сервер. Кроме того, на основе [Eventbase Firebase гарантирует] (https://www.firebase.com/docs/ios/guide/retrieving-data.html#section-guarantees), кажется, что слушатель должен срабатывать, даже если сервер еще не обновлены. Я думаю, что это может быть ошибкой с клиентом iOS и отправил его в поддержку Firebase. – Brad

+0

@Kato Я обновил образец кода, чтобы использовать блок завершения при обновлении приоритета. Блок завершения вызывается без ошибок, и я все еще испытываю ту же проблему. – Brad

ответ

2

Похоже, что это ошибка в SDK Firebase iOS. Спасибо, что привлекли наше внимание! К счастью, мы фактически обновляем нашу поддержку запросов и в настоящее время имеем бета-версию SDK, которая, помимо новых функций, исправляет эту ошибку. Если вы хотите сделать снимок, проверьте http://www.firebase.com/docs/beta/queries

Иначе, если вы подождете пару недель, эти функции (и исправление ошибок) перейдут в выпуски SDK.

Смежные вопросы