我的应用程序使用 Firebase 来同步和恢复数据。我用setValue:withCompletionBlock:
插入、更新和删除 Firebase 对象的方法。每当有 CoreData 保存时就会调用此方法,从而将我的所有本地更改同步到 Firebase
- (void) setValue:(id)value withCompletionBlock:(void (^)(NSError* error, Firebase* ref))block;
现在同步会将所有本地数据上传到 firebase,而恢复会将本地数据替换为 firebase 数据。
- (void) observeSingleEventOfType:(FEventType)eventType withBlock:(void (^)(FDataSnapshot* snapshot))block;
我观察到FEventTypeValue
并使用FDataSnapshot
从 Firebase 获取数据并恢复本地数据。
所以一切都很适合我,直到我设置persistence
到 Firebase。
[Firebase setOption:@"persistence" to:@YES];
现在,当persistence
开启后,当我更新时,比如说将一个对象插入到Firebase中,然后恢复,恢复的是插入之前的数据。即新插入的对象不会被恢复。但是,如果我再次恢复,插入的对象就会恢复。删除对象时也会发生同样的情况。第一次恢复时,删除的对象会重新出现,再次恢复时会消失。我可以通过 Firebase 数据视图看到 Firebase 对象已正确插入和/或删除。
我不确定我在这里做错了什么。我只在恢复时遇到问题。我认为 Firebase 缓存导致了此恢复问题。我正在考虑在恢复之前清除 Firebase 缓存。我的问题是
- 恢复之前清除缓存是一个好方法吗?
- 如果是,如何清除 Firebase 缓存?
- 如果没有,您能给我建议恢复数据的最佳方法吗?