我正在尝试使用CloudKit上传一些记录更改.我正在使用CKModifyRecordsOperation来批量上传设备上已更改的记录.记录都在自定义区域中
由于某种原因,操作不断回来,并告诉我“”保护数据不匹配“
这是代码:
- (void)updloadLocalChangesWithCompletionBlock:(void (^)(NSError *error))completionBlock { // Initialize the data NSArray *localChanges = self.localChanges; NSArray *localDeletions = self.localDeletions; // Initialize the database and modify records operation CKDatabase *database = [CKContainer defaultContainer].privateCloudDatabase; CKModifyRecordsOperation *modifyRecordsOperation = [[CKModifyRecordsOperation alloc] initWithRecordsToSave:localChanges recordIDsToDelete:localDeletions]; modifyRecordsOperation.savePolicy = CKRecordSaveAllKeys; NSLog(@"CLOUDKIT Changes Uploading: %d",localChanges.count); // Add the completion block modifyRecordsOperation.modifyRecordsCompletionBlock = ^(NSArray *savedRecords,NSArray *deletedRecordIDs,NSError *error) { if (error) { NSLog(@"[%@] Error pushing local data: %@",self.class,error); } [self.localChanges removeObjectsInArray:savedRecords]; [self.localDeletions removeObjectsInArray:deletedRecordIDs]; completionBlock(error); }; // Start the operation [database addOperation:modifyRecordsOperation]; }
这是它给我的错误:
[CloudKitSyncManager] Error Uploading Changes: <CKError 0x156654a0: "Partial Failure" (2/1011); "Failed to modify some records"; partial errors: { default-00001:(ZoneName:UserRecordID) = <CKError 0x1550b5a0: "Server Record Changed" (14/2037); "Error saving record <CKRecordID: 0x18080430; default-00001:(ZoneName:UserRecordID)> to server: Protection data didn't match"> }>
解决方法
你的self.localChanges数组究竟是什么? CKRecord我假设,但您是根据从CloudKit下载的相同CKRecord对象上传的修改记录?
当我尝试使用我的本地更改上传新分配的CKRecord并期望它覆盖服务器的副本时,我有一个类似的(虽然不是确切的)错误消息.我通过下载我的项目的远程副本,将更新应用于CloudKit提供给我的CKRecord实例,然后上传它来修复它.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。