是否有人使用CloudKit
选项DeleteSelf
获取CKReference
的经验?这是我从文档中得到的:
DeleteSelf
引用记录的删除操作。删除记录还会删除包含指向该记录的CKReference对象的所有记录。删除附加记录可能会触发更多记录的级联删除。删除在默认区域中是异步的,在自定义区域中是立即的。
所以我一直在测试这个,我使用CKReference
和使用我的应用创建了多个CloudKit Dashboard
个对象。每当我使用我的应用程序时,我都会像这样创建引用:
let reference:CKReference = CKReference(recordID: savedFriend.friendID, action: CKReferenceAction.DeleteSelf)
我必须做某事错误,因为无论何时我去手动删除使用仪表板引用的记录,或者设置我的应用程序以编程方式删除它,记录都会消失,但引用永远不会被删除。我想也许我应该等待,它最终会发生,但几小时后它仍然在那里检查,就像它本应该删除自己。这有点令人沮丧,因为我设计了一些我的代码,假设这可行,现在我可以有一个浪费资源的应用程序试图找到一个不再存在的CKRecord
。我应该不依靠这个来工作吗?我感谢任何帮助或建议。
更新〜2016年7月4日
我跳回到这里,并发布了一个更新,该问题已经解决了。我并不完全相信这个问题不会重新出现,所以我昨晚寻求一些保证。我创建了5个不同的CKRecords
并创建了各种不同的CKReference
对象,以便在整个数据库中引用它们。然后我继续在每个引用上设置CKReferenceAction.DeleteSelf
选项(我通过仪表板手动尝试了两个,其他三个以编程方式完成)。无论如何,我等了几分钟然后删除了引用的记录......十分钟后,引用仍然存在。我又等了5-10分钟,他们还在那里,所以我上床睡觉,假设早上他们肯定要走了,对吧?错误! 12个小时后,CKReference
条目仍然存在,引用的记录仍然消失。我肯定是在摸不着头脑,好像这是CloudKit
的错误。我应该提一下,我也注意到我的仪表板中有一些奇怪的行为。在过去的四天左右,在左下角,它一直表示它是“重新索引开发数据”,这里是一张图片,例如:
这会导致这个问题吗?有人熟悉这个问题并知道解决这个问题的方法吗?任何建议,将不胜感激。我已经向Apple提交了一份错误报告。
答案 0 :(得分:0)
这很可能是一个许可问题。
级联删除仅在删除记录的用户对所有需要删除的记录具有“写入”权限时才有效。因此,在CloudKit仪表板中,级联删除仅适用于使用开发人员的iCloud帐户创建的记录。