0

Simperium 的问题:

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

我执行了一次清理(SHIFT-COMMAND-K),然后启动了模拟器。我所有丢失的数据现在都出现在应用模拟器中。伟大的。

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

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

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

4

1 回答 1

1

正在发生的事情是:应该获取那些“新旧实体”的方法被绕过了,因为它们都已经有了Key + GhostData

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

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

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

  • Loop through all of the entities in that bucket and set to nil both, the simperiumKey and ghostData value.

  • Run your app just once

  • Kill this helper method (otherwise it'd probably cause duplicate entries!).

(Untested), but that should do the trick!

于 2015-12-16T12:21:15.603 回答