删除CKRecord:记录删除会违反验证参考,拒绝更新

时间:2017-12-12 15:44:27

标签: ios swift cloudkit

我只是尝试删除CKRecord。在我将其指定为父级并引用另一个ckrecord之前:

    let rID = CKRecordID(recordName: territory.identifier, zoneID: territory.recordZoneID)
    let record = CKRecord(recordType: "Territory", recordID: rID)

    if let territoryGroup = territoryGroup {
        let recordID = CKRecordID(recordName: territoryGroup.identifier, zoneID: CloudAssistant.shared.zone.zoneID)
        record.parent = CKReference(recordID: recordID, action: .none)
        record["territoryGroup"] = CKReference(recordID: recordID, action: .none)
    }

,错误如下:

  

“删除记录时出错:记录删除会违反验证参考([C1A31F1D-914F-4007-8C8B-73FC0503C798,...]),拒绝更新”

这是为了删除记录而不删除其子记录,这就是为什么我在那里设置了.none而不是.deleteSelf

有什么问题?

仪表板中的内容相同:

enter image description here

对于相应的参考记录,有一个很好的设置:

enter image description here

如您所见,删除自我未被选中。我错过了什么吗?对我来说,它应该没有问题地删除它。

2 个答案:

答案 0 :(得分:2)

当我使用setParent(parentRecordID)设置记录的父级并且还使用CKReference创建了.none时,我遇到了同样的错误。看起来如果设置父级,则必须在标准引用上使用.deleteSelf。但是,据我所知,只有在您想使用CKShare时才需要设置父级。我写了更多关于它的信息here

答案 1 :(得分:0)

解决方法是将另一个引用设置为非父级属性。此引用具有.deleteSelf。

查看此答案

Cannot delete CKRecords with .parent set