ios – 用于CKReference的CloudKit删除自我选项不起作用

有没有人使用CloudKit选项将DeleteSelf用于CKReference?这是我从文档中得到的:

DeleteSelf

The delete action for referenced records. Deleting a record also deletes any records containing CKReference objects that point to that record. The deletion of the additional records may trigger a cascade deletion of more records. The deletions are asynchronous in the default zone and immediate in a custom zone.

所以我一直在测试这个,我使用CloudKit仪表板和使用我的应用程序创建了多个CKReference对象.每当我使用我的应用程序执行此操作时,我都会像这样创建引用:

let reference:CKReference = CKReference(recordID: savedFriend.friendID,action: CKReferenceAction.DeleteSelf)

我知道它被分配为删除自己,因为在仪表板中它显示选中的选项:

我必须做错事,因为无论何时我去手动删除使用仪表板引用的记录,或者设置我的应用程序以编程方式删除它,记录都会消失,但引用永远不会被删除.我想也许我应该等待,它最终会发生,但几小时后它仍然在那里检查,就像它本应该删除自己.这有点令人沮丧,因为我设计了一些我的代码,假设这可行,现在我可以有一个浪费资源的应用程序试图找到一个不存在的CKRecord.我应该不依靠这个来工作吗?我感谢任何帮助或建议.

更新〜04/07/2016

我跳了回来,并发布了一个更新,问题已经解决了.我并不完全相信这个问题不会重新出现,所以我昨晚寻求一些保证.我创建了5个不同的CKRecords并创建了各种不同的CKReference对象,以便在整个数据库中引用它们.然后我继续在每个引用上设置CKReferenceAction.DeleteSelf选项(我通过仪表板手动尝试了两个,其他三个以编程方式完成).无论如何,我等了几分钟然后删除了引用的记录……十分钟后,引用仍然存在.我又等了5-10分钟,他们还在那里,所以我上床睡觉,假设早上他们肯定要走了,对吧?错误! 12个小时后,CKReference条目仍然存在,引用的记录仍然消失.我肯定是在摸不着头脑,好像这是CloudKit的一个错误.我应该提一下,我也注意到我的仪表板中有一些奇怪的行为.在过去的四天左右,在左下角,它一直表示它是“重新索引开发数据”,这里是一张图片,例如:

这会导致这个问题吗?有人熟悉这个问题并知道解决这个问题的方法吗?任何建议,将不胜感激.我已经向Apple提交了一份错误报告.

解决方法

这很可能是一个许可问题.

只有在删除记录的用户对所有需要删除的记录具有“写入”权限时,才能执行级联删除.因此,在CloudKit仪表板中,级联删除仅适用于使用开发人员的iCloud帐户创建的记录.

在那里看到我的答案:https://stackoverflow.com/a/38606004/6643055

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...