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

simperium: sqlite database restored to Xcode Simulator (Xcode 7.1.1). new records sync. old records don't

Simperium 问题:

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

我执行了一次清理 (SHIFT-COMMAND-K),并启动了模拟器。我所有丢失的数据现在都出现在应用程序模拟器中。太好了。

但恢复的核心数据记录没有同步到相应的 Simperium 存储桶。令人费解的是,Simperium DID 成功响应了在创建、更新和删除操作时同步新记录。

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

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

发生的事情是:应该选择那些 'new old entities' 的方法被绕过了,因为它们都已经有了,Key + GhostData.

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

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

  • 在您的应用程序中,添加一个(临时 + 辅助方法),它会在 Simperium 初始化后正确执行(因此,核心数据堆栈已连接) ), 但在调用 authenticate 方法之前。

  • 遍历该存储桶中的所有实体并将 simperiumKeyghostData 值都设置为 nil .

  • 运行 你的应用只需要一次

  • 终止这个辅助方法(否则它可能会导致重复条目!)。

(未经测试),但这应该可以解决问题![​​=12=]