【发布时间】:2020-05-10 15:52:45
【问题描述】:
我已成功将我的应用迁移到使用 NSPersistentCloudKitContainer 以便使用 CloudKit 同步其数据。
但是,我想知道我应该如何处理某些实体的唯一性。例如,假设 User 实体具有需要唯一的属性 emailAddress。现在考虑两个设备创建具有相同电子邮件地址的User 实例的情况。在我目前的实现中,没有任何东西强制唯一性,所以我最终让这两个实例在两个设备上都可用,只要它们同步更改。
目前,每当我假设它们是唯一的实体时,我都会检查它们是否真的是,如果不是,则合并它们,包括将一个实例的关系分配给另一个实例。合并后,我删除了“空”实例。虽然这似乎工作正常,但我也可以假设这可能会出错:当两个设备同时合并并最终删除不同的实例导致所有实例都被删除时。
这种情况应该如何处理?
PS。我一直在寻找类似的问题,发现了一些类似的问题,但它们都与明确使用 CKRecord 有关。由于我使用的是 NSPersistentCloudKitContainer,它封装并简化了 CloudKit 实现,因此我不使用那些“低级”类。
【问题讨论】:
-
我也有同样的问题,见stackoverflow.com/questions/65527786/…
标签: swift cocoa icloud cloudkit nspersistentcloudkitcontainer