【问题标题】:Deleted CloudKit records Reappear删除的 CloudKit 记录重新出现
【发布时间】:2015-09-06 03:23:41
【问题描述】:

我正在使用 CloudKit 构建一个 iOS 应用程序。

它应该允许用户在云中添加、编辑和删除Products。用户可以在文件夹中组织这些。这些文件夹只是 cloudkit 中的其他记录类型。用户可以使用的文件夹级别没有限制,因为任何文件夹都可以在其父文件夹中保存一个CKReference。我的应用程序中的所有 CloudKit 通信都发生在一个专用的 CloudKitController 类中

这一切都有效,但一段时间后停止工作,原因不明。

当我测试我的应用程序时,我什至不使用多级深度的用户文件夹。但是,在使用一段时间(最多一周)后,所有已删除的记录似乎都会重新出现在 CloudKit 上。对此有几点说明:

  • 当我重置 CloudKit 仪表板并重新开始时,它运行良好。未更改代码。
  • 显然,随着应用程序的开发,我不断地编辑我的代码。但是,我通常不会编辑代码中要存储在 CloudKit 中的数据类型。当我这样做时,这个问题不会在之后直接出现
  • CloudKit 仪表板中的更改(例如添加数据类型)不会导致此问题
  • 我没有像在核心数据中那样在本地存储任何记录。只要我使用它们,它们就只能坐在单例中
  • 当我转到 CloudKit 仪表板时,产品记录类型显示它具有例如13 个实例。有时它太糟糕了,我的应用实际上加载了 100 多个。当我转到 recordZone 时我也可以看到它们,但 RecordType 仍然说它只有 13 个实例
  • 在 CloudKit Dashboard 中删除这些记录只会让它们消失一段时间。当我重新加载页面时,它们会再次弹出。

这种情况已经有一段时间了,我已经检查了我的代码、Apple 库和谷歌无数次,但我无法弄清楚是什么导致了这个问题。

问题: 有人知道如何克服这个问题吗?正如我所说,我已经遇到这个问题好几个星期了,重置我的 CloudKit 仪表板只能“治愈”它长达一周,然后它再次弹出。如果可以帮助您回答我的问题,我也很乐意发布任何代码。我最初没有发布任何代码,因为我不知道是什么代码可能导致这种情况。

任何答案将不胜感激

【问题讨论】:

  • 我遇到了完全相同的问题。我一直在尝试删除我的一种记录类型,但一段时间后记录仍会恢复,这是有问题的,因为记录类型实际上已更改(cloudkit 显示的记录类型实际上省略了旧版本和旧版本之间不常见的任何字段)新的)。多么令人困惑。
  • 很高兴知道至少我不是唯一一个。在您的情况下,您在应用程序或数据库中执行特定任务后是否会出现此问题?
  • 我一直在搞乱一堆,所以我不确定。无论如何,我完全重置了数据库,从那以后我就一直在努力。但是,如果已经保存了很多数据(到目前为止,我保存的所有数据都不重要并且可以清除),我将不愿意这样做。
  • 如果您还没有,请尝试查看 Apple 的开发者论坛,按此顺序在此处发布并提交错误。

标签: ios swift cloudkit


【解决方案1】:

Apple 回复了我已提交的错误报告,该错误报告应使用 iOS 9 解决。到目前为止,这似乎是正确的,因为此问题没有再次发生,但如果这仍然困扰着某人,请告诉我.

【讨论】:

  • 这件事刚刚发生在我身上。已删除的记录在仪表板中无处可见,但已神奇地出现在我的应用程序中。
  • 是的,我也只是浪费了 5 个小时来寻找我身边的错误。该错误仍然存​​在于 IOS 9.3 中。重置开发环境解决了问题...
【解决方案2】:

这可能会发生,因为下面的仪表板跟踪表明 Apple 使用 Tombstone 技术在分布式数据库中复制删除。其中一个节点可能存在错误或旧软件版本,并且正在将 tombstone false 字段同步回整个系统,导致记录自行取消删除。或者您的代码正在做的事情可能是意外地使这些已删除的记录恢复生机?一种解决方法是使用您自己的软删除布尔字段并查看其行为方式。

[{
    "results": [{
        "tombstone": false
        "id": "NewItem",
        "etag": "ibgs5bpj",
        "recordType": "Items",
        "fields": {
            "name": "Malc",
            "location": {
                "latitude": 38.0,
                "longitude": -122.0
            }
        },
        "conflictLosersEtags": [],
        "created": {
            "timestamp": 1435514295943,
            "user": "_0ac573ae502ca7ca9d763a84b27bc42a",
            "device": "_2"
        },
        "modified": {
            "timestamp": 1435514295943,
            "user": "_0ac573ae502ca7ca9d763a84b27bc42a",
            "device": "_2"
        }
    },
    ...

至于记录数,是的,我的也是不准确的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-20
    相关资源
    最近更新 更多