重置Firebase缓存

时间:2016-08-16 19:08:13

标签: ios swift firebase persistence firebase-realtime-database

在使用Firebase进行开发时,我在控制台中手动添加了一条数据记录,但忘记了一个条目,这导致应用程序崩溃。我已在控制台中更正了问题,但由于我使用的是Firebase的数据持久性,原始数据错误仍然存​​在,导致再次崩溃。如果我关闭持久性,一切都很好,但缓存的商店没有更新。有没有人遇到过这个问题并找到了解决问题的方法?

2 个答案:

答案 0 :(得分:1)

我也遇到过这个问题,因为用户被困在无休止的启动循环中而失去了睡眠。

正如所建议的那样,问题出现的机会是在应用程序启动和Firebase服务器后续缓存更新到来之间的时间窗口中创建的。如果在此时间窗口期间从缓存中读取数据,然后,如果数据恰好缺少预期值,然后,如果应用程序以假设数据不会为零的方式使用数据,则应用程序崩溃。如果应用程序在缓存更新之前崩溃,缓存将永远不会有更新的机会,并且用户将陷入无限循环(没有从设备的内存中擦除应用程序的数据)。

到目前为止,我已经通过更加努力地防止在启动期间调用的代码中的nil值的可能性来解决这个问题。如果检查nil并且不方便找到,那么,根据情况,(1)如果可能并且如果它不会导致进一步的数据损坏,应用程序将替换适当的值代替nil,否则(2)app进入等待模式几秒钟,然后从问题节点启动新的读取,然后重新尝试启动例程。

也许这个故事的寓意永远不会假设一个值是非零的或者在预期的范围内。要么在收到时验证该值,要么在预期使用时检查该值或两者,然后相应地处理错误。

答案 1 :(得分:0)

缓存应自动更新。由于这种情况发生在后台线程中,而它在主线程上调用代码时,即使应用程序代码崩溃,我也希望它能更新磁盘缓存。

但如果没有发生这种情况,恢复状态的最快方法是清除应用程序的应用程序数据或完全卸载/重新安装。