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