删除的CloudKit记录重新出现

时间:2015-06-20 03:51:50

标签: ios swift cloudkit

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

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

这一切都有效,但一段时间后停止工作没有明确的理由。

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

  • 当我重置我的CloudKit仪表板并重新开始时,它完美无缺。没有更改代码。
  • 显然,我正在不断编辑代码,因为应用正在开发中。但是,我通常不会编辑我的代码中要存储在CloudKit中的数据类型。当我这样做时,这个问题不会在以后出现问题
  • CloudKit信息中心的更改(例如添加数据类型)不会导致此问题
  • 不在本地存储任何记录,例如核心数据。只要我使用它们,它们就会坐在单身中
  • 当我转到CloudKit仪表板时,产品记录类型显示它具有例如13个实例。有时它太糟糕了,我的应用实际上加载了100以上。当我去RecordZone时我也可以看到它们,但RecordType仍然说它只有13个实例
  • 仅在CloudKit Dashboard中删除这些记录会使它们暂时消失。当我重新加载页面时,它们会再次弹出。

现在已经这样了一段时间了,我已经多次查看了我的代码,Apple Library和Google,但我无法弄清楚导致这个问题的原因。

问题: 有谁知道如何克服这个问题?就像我说的那样,我已经遇到了几个星期,重置我的CloudKit仪表板只能“治愈”它长达一个星期,然后它再次弹出。我也非常乐意发布任何代码,如果这有助于你回答我的问题。我最初没有发布任何代码,因为我不知道代码可能会导致这个问题。

任何答案都将受到高度赞赏

2 个答案:

答案 0 :(得分:2)

Apple回复了一个错误报告,我已经提出这个问题应该通过iOS 9解决。到目前为止这似乎是正确的,因为这个问题还没有再次发生,但请告诉我这是否仍然存在困扰某人。

答案 1 :(得分:1)

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

[{
    "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"
        }
    },
    ...

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