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
方法之前。
遍历该存储桶中的所有实体并将 simperiumKey 和 ghostData 值都设置为 nil .
运行 你的应用只需要一次
终止这个辅助方法(否则它可能会导致重复条目!)。
(未经测试),但这应该可以解决问题![=12=]
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
方法之前。遍历该存储桶中的所有实体并将 simperiumKey 和 ghostData 值都设置为 nil .
运行 你的应用只需要一次
终止这个辅助方法(否则它可能会导致重复条目!)。
(未经测试),但这应该可以解决问题![=12=]