simperium:sqlite数据库恢复到Xcode Simulator(Xcode 7.1.1)。新记录同步。旧记录不是

时间:2015-12-11 20:21:34

标签: simperium

Simperium的问题:

写得不好的XC单元测试从simperium用户帐户(我的)中删除了大部分数据。没问题。我将sqlite文件的一天备份移动到iPhone 5(iOS 9.1)模拟器中,并从同一Documents目录中删除了现在无用的sqlite文件。

我执行了干净(SHIFT-COMMAND-K),并启动了模拟器。我现在所有丢失的数据都出现在应用模拟器中。大。

但是,恢复的核心数据记录没有被同步到相应的Simperium存储桶。令Sizzling,因为Simperium DID成功响应同步创建,更新和删除操作的新记录。

然后我删除了Simperium.com上的整个数据集。结果相同。同步的新记录没有问题,旧记录没有。

删除旧的sqlite文件时是否删除了重要的元数据。如果是这样,(如何)可以让旧记录重新同步?

1 个答案:

答案 0 :(得分:1)

正在发生的事情是:应该绕过这些'新旧实体'的方法,因为它们都已经同时包含了Key + GhostData

这种情况通常应该自动恢复,因为这些实体会以某种方式得到更新(这样lib会选择它们并将它们与后端同步)。

强制重新上传的最简单方法是:

  • 在你的应用程序中,添加一个(临时+辅助方法),在初始化Simperium之后执行 right (因此,核心数据堆栈已连线),但在{{之前1}}方法被调用。

  • 遍历该存储桶中的所有实体并设置为nil, simperiumKey ghostData 值。

  • 只需运行一次应用

  • 杀死这个助手方法(否则可能导致重复的条目!)。

(未经测试),但这应该可以做到!