0

大约一年前我购买了 Ensembles 支持,但遗憾的是现在才开始尝试使用它。

我有一个支持多个核心数据文档的应用程序,并且正在尝试确定发现它们的最佳方法。在您的书中,您建议使用自定义注册表来支持带有 plist 文件的文档元数据可能是实现文档发现、名称更改等的最佳方式。我设计了一种方法来做到这一点,但意识到一旦我去“更新"(通过使用相同的文件名进行更改并上传到云)我收到一个错误的文档的 plist 文件:

2017-07-26 10:54:16.986553-0700 XXX[6080:2429554] 由于现有项目,部分记录无法上传。通常是由于 CloudKit 上的查询缓存过时所致。会自我纠正。忽略:defaultOwner) =

这让我意识到它与设计的另一个问题相矛盾......文件不应该被删除和重新上传,因为存在竞争条件并且您最终可能会导致数据损坏。

是否有一种特定的方式让您认为可以更新 plist 文件以便您可以信任其中的数据,或者您是否应该上传带有时间戳名称的新 plist 文件并“希望”数据已正确合并。

您能否更详细地描述一下您的设计理论,即如何使用 Ensembles 解决文档注册表的这个问题?

谢谢你,詹姆

4

1 回答 1

0

实际上有一种方法可以在不使用属性列表或类似的东西的情况下检测存在哪些文档。CDEPersistentStoreEnsemble被调用的有一个类函数+retrieveEnsembleIdentifiersFromCloudFileSystem:completion:

https://github.com/drewmccormack/ensembles/blob/master/Framework/Source/Ensemble/CDEPersistentStoreEnsemble.h#L392

这将通过完成处理程序返回一个集合标识符数组。如果你给你的集合命名与你的文档文件相同,你应该能够找出云数据中存在的内容,而无需同步 plist 或类似的东西。

于 2017-07-30T09:19:27.627 回答