首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CloudKit:用CKModifyRecordsOperation保存记录错误

CloudKit:用CKModifyRecordsOperation保存记录错误
EN

Stack Overflow用户
提问于 2015-04-14 20:43:28
回答 1查看 2.4K关注 0票数 4
代码语言:javascript
复制
<CKError 0x14d8cb70: "Partial Failure" (2/1011); "Failed to modify some records"; partial errors: {
    B5DEF0B5-F064-4B27-9C89-BE75C9134297:(_defaultZone:__defaultOwner__) = <CKError 0x14d83b70: "Server Record Changed" (14/2037); "Error saving record <CKRecordID: 0x15748cd0; B5DEF0B5-F064-4B27-9C89-BE75C9134297:(_defaultZone:__defaultOwner__)> to server: Protection data didn't match">
}>

当我试图将CKRecord保存到CloudKit时,我会得到这个错误。有什么想法吗?

我必须获取像方便API中的第一批记录吗?

我正在使用CKModifyRecordsOperation方法更新更多的记录。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-14 20:48:13

当您计划进行更新时,首先需要读取记录,进行更改,然后编写记录。您收到一个通知,即在读取和写入记录之间的时间内更改了记录。

如果服务器上的记录版本比您试图保存的版本更新,服务器将返回一个CKErrorServerRecordChanged错误。错误对象的userInfo字典包含冲突记录的不同版本。使用这些键检索记录,并执行解决冲突所需的任何解析逻辑。

如下面所讨论的,在您的示例中,问题是将对象持久化到数据库并重新创建CKRecord来进行修改。在这种情况下,您需要使用CKRecord encodeSystemFieldsWithCoder持久化系统字段。并通过使用一个CKRecord初始化它来重新创建它。您可以使用NSKeyedArchiver和NSKeyedUnarchiver来保存和重新创建CKRecord。如果您需要一个示例,请参阅fromCKRecord和toCKRecord方法在https://github.com/evermeer/EVCloudKitDao/blob/master/AppMessage/AppMessage/CloudKit/EVCloudKitDao.swift底部

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

https://stackoverflow.com/questions/29637057

复制
相关文章

相似问题

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