我正在观察使用FIRDataEventTypeValue,并根据文档将触发一个块:
“只要数据发生变化,您的块就会被触发初始数据。”
我在NSMutatbleArray中保存数据的本地缓存,并在事件触发时 我搜索缓存,如果找到一个条目,数据将使用新值进行更新。
如果在缓存中找不到该条目,我将数据添加到缓存中。
但我如何处理删除?我不想使用单独的观察者,或者这是唯一的方法。
[_myRef observeEventType:FIRDataEventTypeValue withBlock:^(FIRDataSnapshot * _Nonnull snapshot) {
NSDictionary *dict = snapshot.value;
if (dict == (id)[NSNull null]) {
[_cache removeAllObjects];
[self dataEvent];
return;
}
[dict enumerateKeysAndObjectsUsingBlock:^(id _Nonnull key, id _Nonnull obj, BOOL * _Nonnull stop) {
// extract values from obj and store it in a cache
答案 0 :(得分:0)
方法 observeEventType:withBlock 将通过所有快照中包含的数据进行调用,因此您可以“删除”数据重建整个缓存,也无需更新缓存条目。
[_myRef observeEventType:FIRDataEventTypeValue withBlock:^(FIRDataSnapshot * _Nonnull snapshot) {
[_cache removeAllObjects];
NSDictionary *dict = snapshot.value;
if (dict == (id)[NSNull null]) {
[self dataEvent];
return;
}
[dict enumerateKeysAndObjectsUsingBlock:^(id _Nonnull key, id _Nonnull obj, BOOL * _Nonnull stop) {
// process the dictionary and its values and store in the cache