Ios CloudKit删除CKReference的自选项';行不通
是否有人有使用Ios CloudKit删除CKReference的自选项';行不通,ios,swift,cloudkit,ckreference,Ios,Swift,Cloudkit,Ckreference,是否有人有使用CloudKit选项来deleteslf进行CKReference的经验?以下是我从文件中得到的信息: 删除自己 引用记录的删除操作。删除记录也会删除包含指向该记录的CKReference对象的所有记录。删除附加记录可能会触发级联删除更多记录。删除在默认区域中是异步的,在自定义区域中是立即的 所以我一直在测试,我使用CloudKit仪表板和我的应用程序创建了多个CKReference对象。每当我使用我的应用程序执行此操作时,我都会创建如下引用: let reference:CKRe
CloudKit
选项来deleteslf
进行CKReference
的经验?以下是我从文件中得到的信息:
删除自己
引用记录的删除操作。删除记录也会删除包含指向该记录的CKReference对象的所有记录。删除附加记录可能会触发级联删除更多记录。删除在默认区域中是异步的,在自定义区域中是立即的
所以我一直在测试,我使用CloudKit仪表板和我的应用程序创建了多个CKReference
对象。每当我使用我的应用程序执行此操作时,我都会创建如下引用:
let reference:CKReference = CKReference(recordID: savedFriend.friendID, action: CKReferenceAction.DeleteSelf)
我知道它被指定删除自身,因为在仪表板中,它显示了选中的选项:
我一定是做错了什么,因为每当我去手动删除使用仪表板引用的记录,或者设置我的应用程序以编程方式删除它时,记录会消失,但引用永远不会被删除。我想也许我应该等待,它最终会发生,但几个小时后,它仍然在那里检查过,好像它应该删除自己。这有点令人沮丧,因为我设计了一些代码,假设这可以工作,现在我可以有一个浪费资源的应用程序,试图找到一个不再存在的CKRecord
。难道我就不应该依靠这个来工作吗?我很感激能得到的任何帮助或建议
更新至2016年7月4日
我迫不及待地回到这里,发布了一条最新消息,说问题已经自行解决了。我并不完全相信这个问题不会再次出现,所以昨晚我寻求一些安慰。我创建了5个不同的CKRecords
,并创建了各种不同的CKReference
对象来在整个数据库中引用它们。然后,我继续在每个引用上设置CKReferenceAction.DeleteSelf
选项(我通过仪表板手动尝试了两个,另外三个通过编程完成)。不管怎样,我等了几分钟,然后删除了引用的记录……十分钟后,所有引用仍然存在。我又等了5-10分钟,他们仍然在那里,所以我上床睡觉,以为他们肯定会在早上离开,对吗?错了!12小时后,CKReference
条目仍然存在,引用的记录仍然不见了。我肯定是在挠头,这似乎是CloudKit
的一个bug。我应该提到的是,我还注意到我的仪表板中有一些奇怪的行为。在过去四天左右的时间里,它一直在左下角表示“正在重新编制开发数据的索引”,下面是一张图片,例如:
这会导致这个问题吗?有人熟悉这个问题并且知道解决这个问题的方法吗?如有任何建议,将不胜感激。我已经向苹果公司提交了一份缺陷报告 这很可能是权限问题
仅当删除记录的用户对所有需要删除的记录具有“写入”权限时,级联删除才会起作用。因此,在CloudKit仪表板中,级联删除只适用于使用开发人员的iCloud帐户创建的记录
请参见我的答案:您是否设置了任何可能会妨碍您的访问控制或权限?我刚刚在仪表板上做了一个快速测试。我创建了一种类型的对象。我创建了第二种类型的对象。在第二个对象中,我将引用放在第一个对象上,并设置“DeleteSelf”。然后我删除了第一个对象。第二个物体被删除了,你一定对云之神有某种魔法影响。我一天中大部分时间都在强调这个问题,在我读了你的评论之后,我去做了更多的测试并检查了我的权限,现在所有没有删除自己的引用都消失了……我什么都没碰,我只是重新加载了我的仪表板。我很高兴他们现在不知从何而来,但我也很困惑。为什么我会经历大约8小时的搬迁延迟?如果在开发之后经常发生这种情况,可能会导致问题。可能会有延迟,但通常只有几秒钟。我不知道你为什么看了8个小时。@Paulw11-你对删除记录和删除引用之间的平均时间有估计吗?我不再经历小时范围内的延迟,但我仍然注意到,在我继续测试时,引用通常需要大约10分钟才能删除。这是CloudKit的典型行为吗?在我看来,这仍然是过度和低效的。2017年9月,我在重新设计的CloudKit仪表板上看到了同样的问题。删除引用似乎不可靠,所以我将手动删除所有引用,以防万一。