Simperium问题:
一个写得不好的XC单元测试从simperium用户帐户(我的)中删除了大部分数据。没问题。我将sqlite文件的一天备份移到了iPhone 5(iOS 9.1)模拟器中,并从同一个Documents目录中删除了现在无用的sqlite文件。
我执行了一次清理(SHIFT-COMMAND-K),并启动了模拟器。我所有丢失的数据现在都出现在应用程序模拟器中。太棒了
但是恢复的核心数据记录并没有同步到相应的Simperium存储桶。令人困惑的是,Simperium在创建、更新和删除操作时成功同步了新记录。
然后我删除了Simperium.com上的整个数据集。结果也是一样。新记录同步没有问题,旧记录没有
在删除旧的sqlite文件时,是否有我删除的重要元数据。如果是,(如何)使旧记录重新同步?
现在的情况是:应该拾取那些"新的-旧的实体"的方法被绕过了,因为它们都已经同时具有这两个实体,即Key+GhostData。
这种情况通常应该自动恢复,前提是这些实体以某种方式得到更新(这样lib就会拾取它们并将它们与后端同步)。
强制重新上传的最简单方法是:
-
在您的应用程序中,添加一个(临时+助手方法),在Simperium初始化后(因此,核心数据堆栈已连接),但在调用
authenticate
方法之前执行右。 -
循环遍历该bucket中的所有实体,并将simperiumKey和ghostData值都设置为nil。
-
只运行一次应用程序
-
杀死这个helper方法(否则可能会导致重复条目!)。
(未经测试),但这应该奏效!