2

我已成功迁移我的应用程序以NSPersistentCloudKitContainer使用 CloudKit 同步其数据。

但是,我想知道我应该如何处理某些实体的唯一性。例如,假设一个User实体具有emailAddress需要唯一的属性。现在考虑两个设备创建User具有相同电子邮件地址的实例的情况。在我当前的实现中,没有任何东西强制执行唯一性,所以我最终在两个设备上都可以使用 2 个实例,只要它们得到同步更改。

目前,每当我假设它们是唯一的实体时,我都会检查它们是否真的是,如果不是,则合并它们,包括将一个实例的关系分配给另一个实例。合并后,我删除了“空”实例。虽然这似乎工作正常,但我也可以假设这可能会出错:当两个设备同时合并并最终删除不同的实例时,导致所有这些实例都被删除。

我应该如何处理这样的情况?

PS。我一直在寻找类似的问题,发现了一些类似的问题,但它们都与明确使用CKRecord. 由于我使用NSPersistentCloudKitContainer的是封装和简化 CloudKit 实现的 ,因此我没有使用那些“低级”类。

4

1 回答 1

0

NSPersistentCloudKitContainer仅使用用户的私有数据库区域。您必须有一个公共数据库区域并使用给定的电子邮件获取用户记录。但是,如果您计划在欧盟注册您的应用程序,这可能很重要。他们严格的 GDPR 规则不允许公开电子邮件。

您很可能最终拥有自己的数据库和符合您要求的后端逻辑。

于 2020-09-17T19:59:36.523 回答