Я пытаюсь загрузить некоторые изменения записи с помощью CloudKit. Я пытаюсь использовать CKModifyRecordsOperation для пакетной загрузки записей, которые были изменены на устройстве. Записи находятся в пользовательской зоне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">
}>
Да, они были CKRecords и да, я использовал свежие CKRecords, чтобы перезаписать существующие, и да, ваше решение сработало! В документах не было очень явным. Ну что ж. Спасибо за ответ! – Jonathan