我正在使用CKModifyRecordsOperation批量在CloudKit中创建大约8000条记录。然而,对于大约5%的记录,我得到了一个奇怪的错误:record to insert already exists。经过彻底的调查和重新测试,我一直无法弄清楚为什么会出现这种情况。需考虑的说明:
[NSUUID UUID].UUIDString。在重新测试期间,我还通过创建一组recordNames并将其计数与要上载的总记录的计数进行比较,确认没有重复的recordNames。请知道为什么会产生这些错误吗?
代码:
- (void)uploadInitialRecordsToCloudKit:(NSArray *)recordsToUpload {
NSArray *recordsForThisBatch = recordsToUpload;
NSArray *remainingRecords = nil;
if ([recordsToUpload count] > 350) recordsForThisBatch = [recordsToUpload subarrayWithRange:NSMakeRange(0, 350)];
remainingRecords = [recordsToUpload subarrayWithRange:NSMakeRange([recordsForThisBatch count], [recordsToUpload count] -[recordsForThisBatch count])];
CKModifyRecordsOperation *modifyRecordsOperation = [[CKModifyRecordsOperation alloc] initWithRecordsToSave:recordsForThisBatch recordIDsToDelete:nil];
modifyRecordsOperation.modifyRecordsCompletionBlock = ^(NSArray<CKRecord *> * _Nullable savedRecords, NSArray<CKRecordID *> * _Nullable deletedRecordIDs, NSError * _Nullable operationError) {
if (operationError) NSLog(@"Error during batch save to CK: %@\n\n%@", [operationError localizedDescription], operationError.userInfo);
else NSLog(@"Batch upload to CK successful");
if ([remainingRecords count] > 0) [self uploadInitialRecordsToCloudKit:remainingRecords];
};
[[CKContainer defaultContainer] publicCloudDatabase] addOperation:modifyRecordsOperation];
}发布于 2017-04-28 07:25:29
这似乎是一个CloudKit问题,因为第三个测试已经完成,没有任何错误。
https://stackoverflow.com/questions/43663861
复制相似问题