2016-09-07 3 views
0

Я работаю над приложением iOS, которое получает данные из базы данных Firebase. Мне нужно сохранить локальную версию БД, и я нашел действительно потрясающе автономную возможность Firebase. Теперь,Firebase 3 update local cache

  1. Есть ли способ отключить автоматическую синхронизацию и обновлять только при нажатии пользователем кнопки?
  2. Есть ли способ обновлять только новые или измененные элементы вместо повторной загрузки всего?

2-бис. Есть ли способ узнать каждый элемент, который был добавлен/изменен?

  1. Соответствует ли FIRDataSnapshot протоколу NSCoding? Я хотел бы сохранить его локально в файле Plist ...

EDIT:

После прочтения более Firebase 3 документации, сейчас я ищу, чтобы получить все DB дерева в одном запросе, Является ли это возможным?

Мой код выглядит следующим образом

FIRDatabaseReference.goOnline()  
    var firebase = FIRDatabase.database().referenceWithPath("items") 
      firebase.observeEventType(.Value, withBlock: { snapshot in 

       print(snapshot.value) 

       if let snapshots = snapshot.children.allObjects as? [FIRDataSnapshot] { 

        for snap in snapshots { 

         if let postDictionary = snap.value as? Dictionary<String, AnyObject> { 

          print ("item received") 
         } 
        } 
       } 
      }) 
FIRDatabaseReference.goOffline() 

ответ

1
  1. Да. Вы можете программно управлять, когда данные загружаются, используя observeSingleEventOfType.

  2. Не при использовании observeSingleEventOfType, поскольку при этом вы эффективно отключите кеш Firebase.

  3. FIRDataSnapshot не соответствует протоколу NSCoding

+0

Я нашел в документации goOnline() и goOffline() методы, и я думаю, что они позволят мне делать то, что я пытаюсь сделать (1) , есть ли у вас опыт в использовании этих методов? Firebase 3 docs на самом деле не helpul – jack87

+0

Вызов 'goOffline()' и 'goOnline()' позволяет программно контролировать, подключена ли Firebase к своим серверам. По связанным вопросам см. [Этот список] (http://stackoverflow.com/search?q=%5Bfirebase%5D%5Bios%5D+gooffline). Если у вас возникли проблемы с тем, чтобы часть кода работала, покажите [минимальный код, который воспроизводит проблему в вашем вопросе] (http://stackoverflow.com/help/mcve). –

+0

Спасибо, что вы действительно помогли, на самом деле я пытаюсь понять, как я могу использовать все возможности firebase для решения действительно простой проблемы. Есть ли способ загрузить дерево DB в формате JSON? – jack87

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