CKReference .DeleteSelf属性无效

时间:2015-09-25 19:02:22

标签: ios cloudkit ckreference

.DeleteSelf如何真正起作用? Docs说:

  

将参考对象的操作设置为   CKReferenceActionDeleteSelf,引用的目标 - 即   存储在引用的recordID属性中的记录成为所有者   源记录。删除目标(所有者)记录将删除所有记录   它的来源记录。

但我的印象是删除目标并不总是会删除来源。它仍然在容器中,客户端下载它,并期望参考点到某处,但在客户端上构建服务器数据存储片时,目标不存在,这是非常烦人的?

你如何对待这个案子?你忽略那种记录?或者您定期查找CloudKit存储,搜索损坏的记录以删除它们?

或者不是删除记录,最好设置一个属性,使其处于已删除状态,但将其保存在数据库中?

2 个答案:

答案 0 :(得分:2)

我只是挣扎了一段时间,我想我会分享我的发现......

这基本上是一个许可问题。只有在删除记录的用户对所有需要删除的记录具有“写入”权限时,才能执行级联删除。 因此,在CloudKit仪表板中,级联删除仅适用于使用开发人员的iCloud帐户创建的记录。

如果您需要删除不属于删除用户的记录,您可以在安全性下为记录类型添加“写入”权限。

enter image description here

答案 1 :(得分:0)

如果要通过CloudKit仪表板删除,则必须等待切换记录类型以检查引用的另一端。在删除实际发生之前,您很可能已切换。您可以在“网络”选项卡上使用Safari的Web Inspector来检查删除实际完成的时间。删除多条记录需要很长时间。