已删除 CloudKit 条记录重新出现

Deleted CloudKit records Reappear

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

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

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

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

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

问题: 有人知道如何解决这个问题吗?就像我说的,我已经 运行 进入这个领域好几个星期了,并且只重置我的 CloudKit 仪表板 'cures' 它长达一个星期,然后它再次弹出。如果可以帮助您回答我的问题,我也非常乐意 post 任何代码。我一开始没有 post 编写任何代码,因为我不知道是什么代码导致了这种情况。

任何答案将不胜感激

这可能会发生,因为下面的仪表板跟踪表明 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"
        }
    },
    ...

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

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