【问题标题】:CloudKit Delete Self option for CKReference Doesn't workCKReference 的 CloudKit Delete Self 选项不起作用
【发布时间】:2016-04-07 00:13:42
【问题描述】:

有人有使用CloudKit 选项到DeleteSelf 来获得CKReference 的经验吗?这是我从文档中得到的:

删除自己

引用记录的删除操作。删除记录还会删除包含指向该记录的 CKReference 对象的任何记录。额外记录的删除可能会触发更多记录的级联删除。删除在默认区域中是异步的,在自定义区域中是立即的。

所以我一直在对此进行测试,我使用CloudKit Dashboard 和我的应用程序创建了多个CKReference 对象。每当我使用我的应用程序执行此操作时,我都会像这样创建参考:

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

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

我一定是做错了某事,因为每当我手动删除使用仪表板引用的记录,或将我的应用程序设置为以编程方式删除它时,记录就会消失,但引用永远不会被删除.我想也许我应该等待它最终会发生,但几个小时后它仍然存在,就像它应该已经删除一样。这有点令人沮丧,因为我设计了一些代码并假设这会起作用,现在我可以拥有一个浪费资源的应用程序,试图找到一个不再存在的CKRecord。我不应该依靠这个来工作吗?我很感激我能得到的任何帮助或建议。

更新 ~ 04/07/2016

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

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

【问题讨论】:

  • 您是否设置了任何可能妨碍您的访问控制或权限?我刚刚在仪表板中做了一个快速测试。我创建了一种类型的对象。我创建了第二种类型的对象。在第二个对象中,我引用了第一个对象并设置了“DeleteSelf”。然后我删除了第一个对象。第二个对象被删除
  • 哇,你一定对 CloudKit 诸神产生了某种神奇的影响。我一整天都在强调这个问题,在我读到你的评论之后,我去做更多的测试并检查我的权限,现在所有没有删除自己的引用都是走了......我什么都没碰,我只是再次重新加载了我的仪表板。我很高兴他们现在不知从哪里开始工作,但我也很困惑。为什么我会经历大约 8 小时的移除延迟?如果在开发后频繁发生,这可能会导致问题。
  • 可能会有延迟,但通常只有几秒钟。我不知道你为什么看到 8 小时。
  • @Paulw11 - 您是否估算过从删除记录到删除参考文献之间的平均时间?我不再遇到小时范围内的延迟,但我仍然注意到,当我继续测试时,引用经常需要大约 10 分钟左右才能自行删除。这是 CloudKit 的典型行为吗?对我来说,这似乎仍然过度且效率低下。
  • 我在 2017 年 9 月在重新设计的 CloudKit 仪表板中看到了同样的问题。引用删除似乎不可靠,所以我将手动删除所有引用以防万一。

标签: ios swift cloudkit ckreference


【解决方案1】:

这很可能是权限问题。

仅当删除记录的用户对所有需要删除的记录具有“写入”权限时,级联删除才会起作用。因此,在 CloudKit Dashboard 中,级联删除仅适用于使用开发者的 iCloud 帐户创建的记录。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-27
    • 2016-10-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多