私のアプリは 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 キャッシュをクリアする方法は?
- いいえの場合、データを復元するための最良の方法を教えていただけますか。