是否有人有使用CloudKit
选项将DeleteSelf
转换为CKReference
的经验?这是我从文档中得到的:
因此,我一直在进行测试,我已经使用CKReference
和使用我的应用程序创建了多个CloudKit Dashboard
对象。每当我使用我的应用程序执行此操作时,我都会创建引用,如下所示:
let reference:CKReference = CKReference(recordID: savedFriend.friendID, action: CKReferenceAction.DeleteSelf)
我知道它已被分配删除自己,因为在仪表板中它显示了已选中的选项:
我一定在做错事,因为每当我去手动删除使用仪表板引用的记录,或将我的应用设置为以编程方式将其删除时,记录都会消失,但引用永远不会被删除。我以为也许我应该等待,然后它最终会发生,但是几个小时后,它仍然处于检查状态,就像它应该已经删除了一样。这有点令人沮丧,因为我假设某些代码可以正常工作,因此我设计了一些代码,现在我可以拥有一个浪费资源来尝试查找不再存在的
CKRecord
的应用程序。我是否应该不依靠它来工作?感谢您能获得的任何帮助或建议。更新〜2016年4月7日
我跳了枪回到这里,并发布了该问题已解决的更新。我并不完全相信问题不会再出现,所以昨晚我寻求了一些保证。我创建了5种不同的
CKRecords
,并创建了各种不同的CKReference
对象以在整个数据库中对其进行引用。然后,我继续在每个引用上设置CKReferenceAction.DeleteSelf
选项(我在仪表板上手动尝试了两个,而其他三个以编程方式完成了)。无论如何,我等了几分钟,然后删除了引用的记录……十分钟后,引用仍然存在。我又等了5-10分钟,他们还在那里,所以我上床 sleep ,假设他们一定要在早上走了,对吗?错误的! 12小时后,CKReference
条目仍然存在,并且引用的记录也消失了。我肯定挠头,似乎是CloudKit
的错误。我应该提到的是,我在仪表板中也注意到了一些奇怪的行为。在过去四天左右的时间里,它一直在左下角一直表示它是“重新索引开发数据”,例如:那会导致这个问题吗?是否有人熟悉此问题并知道解决该问题的方法?任何建议,将不胜感激。我已向Apple提交了错误报告。
最佳答案
这很可能是权限问题。
级联删除仅在删除记录的用户对所有需要删除的记录具有“写”权限的情况下才有效。因此,在CloudKit仪表板中,级联删除仅适用于使用开发人员的iCloud帐户创建的记录。
在那里查看我的答案:https://stackoverflow.com/a/38606004/6643055