首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法检索CKRecords以解决CKModifyRecordsOperation中CKErrorCodeServerRecordChanged上的冲突

无法检索CKRecords以解决CKModifyRecordsOperation中CKErrorCodeServerRecordChanged上的冲突
EN

Stack Overflow用户
提问于 2015-06-15 06:48:28
回答 1查看 834关注 0票数 3

在对CloudKit中的记录执行批处理操作时,我在试图处理错误时遇到了一些问题。

我正在成功地提取包含部分错误的字典,我可以对其进行迭代。但是,我无法获得解决CKErrorCodeServerRecordChanged冲突所需的记录。根据文档,我应该能够从字典中得到3条记录:

  • CKRecordChangedErrorServerRecordKey
  • CKRecordChangedErrorAncestorRecordKey
  • CKRecordChangedErrorClientRecordKey

谢谢你对我做错了什么的任何暗示。

代码语言:javascript
复制
func pushRecordChangesForZoneID(recordZoneID: CKRecordZoneID) {
// ...
modifyRecordsOperation.modifyRecordsCompletionBlock = { (savedRecords, deletedRecordIDs, error) -> Void in
    if (error != nil) {
        if error.code == CKErrorCode.PartialFailure.rawValue {
            if let errorDict = error.userInfo?[CKPartialErrorsByItemIDKey] as? [CKRecordID : NSError] {
                for (recordID, partialError) in errorDict {
                    if partialError.code == CKErrorCode.ServerRecordChanged.rawValue {
                        if let userInfo = partialError.userInfo {
                            let serverRecord = userInfo[CKRecordChangedErrorServerRecordKey] as? CKRecord
                            // serverRecord will always be nil
                        }
                    }
                }
            }
        }
    }
}

}

附加信息:当我打印部分错误( userInfo dict of the分部error,partialError.userInfo)的描述时,它看起来不包含其他CKRecords:

代码语言:javascript
复制
[NSDebugDescription: CKInternalErrorDomain: 2037, NSLocalizedDescription: Error saving record <CKRecordID: 0x7fb41bf7e640; DA39FE08-AB0B-4F07-A42E-F5732B114706:(userData:__defaultOwner__)> to server: Protection data didn't match, NSUnderlyingError: <CKError 0x7fd89a92d370: "Unknown Error" (2037)>]

源错误字典(errorDict)的描述如下(我可以通过CKPartialErrorsByItemIDKey成功地获得包含记录I和部分错误的字典):

代码语言:javascript
复制
[<CKRecordID: 0x7fb5bb88afa0; C1575083-F992-448A-8D77-D62C4A42D696:(userData:__defaultOwner__)>: <CKError 0x7fb5b961c6a0: "Batch Request Failed" (22/2024); server message = "Atomic failure"; uuid = 1E4C0FD5-EC10-4071-B277-102A9F1B0E5E; container ID = "iCloud.net.neverthesamecolor.atsumeru">, <CKRecordID: 0x7fb5bb848ad0; DA39FE08-AB0B-4F07-A42E-F5732B114706:(userData:__defaultOwner__)>: <CKError 0x7fb5b9653060: "Server Record Changed" (14/2037); "Error saving record <CKRecordID: 0x7fb41bd9ca50; DA39FE08-AB0B-4F07-A42E-F5732B114706:(userData:__defaultOwner__)> to server: Protection data didn't match">]
EN

回答 1

Stack Overflow用户

发布于 2015-09-02 20:39:22

文档说这只是一个自定义区域功能。

编辑2016年1月21日:它现在为我工作,甚至在默认区域和公共数据库。与以前相比,这是一个很大的变化。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30838888

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档