Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios CloudKit删除CKReference的自选项';行不通_Ios_Swift_Cloudkit_Ckreference - Fatal编程技术网

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仪表板上看到了同样的问题。删除引用似乎不可靠,所以我将手动删除所有引用,以防万一。