CKReference .DeleteSelf属性无效

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

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

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

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

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

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

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

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

在此处输入图像描述

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