集成文档设计

Ensembles document design

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

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

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

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

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

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

谢谢, 海梅

实际上有一种方法可以检测存在哪些文档,而无需使用 属性 列表或类似的东西。 CDEPersistentStoreEnsemble 上有一个 class 函数叫做 +retrieveEnsembleIdentifiersFromCloudFileSystem:completion:

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

这将通过完成处理程序 return 一组整体标识符。如果你给你的整体命名为你的文档文件,你应该能够找出云数据中存在的内容,而无需同步 plists 或类似的东西。