CloudKit CKModifyRecordsOperation为我提供了一个未匹配的保护数据(&Q;) [英] CloudKit CKModifyRecordsOperation gives me a "Protection data didn't match"

查看:0
本文介绍了CloudKit CKModifyRecordsOperation为我提供了一个未匹配的保护数据(&Q;)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用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">
}>

CKRecord

您的self.localChanges数组中到底有什么?CKRecord我假设,但您正在上载的已修改记录是否基于您从推荐答案下载的相同CKRecord对象?

当我尝试上载带有本地更改的新分配的CKRecord并希望它覆盖服务器的副本时,我收到了类似的错误消息(尽管不是很准确)。我通过下载我的项目的远程副本,对CloudKit提供给我的CKRecord实例应用更新,然后上载它来修复它。

这篇关于CloudKit CKModifyRecordsOperation为我提供了一个未匹配的保护数据(&Q;)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆