ios - CKModifyRecordsOperation modifyRecordsCompletionBlock 未被调用

标签 ios objective-c cloudkit ckmodifyrecordsoperation

我正在使用 CKModifyRecordsOperation 保存一组记录,如果我有互联网连接,一切正常,并且正在调用完成 block 。但是,当我没有连接时,不会调用完成 block ,并且我没有得到任何操作失败的信息。

我在完成 block 中使用以下代码

modifyOperations.modifyRecordsCompletionBlock = ^(NSArray *savedRecords, NSArray *deletedRecordIDs, NSError *error)
{
    if(error){
        NSLog(@"Error: %@", error.localizedDescription);
    }

    item.creatorRecordId = record.recordID;
};

然后我使用

执行操作
[self.publicDB addOperation:modifyOperations];

如果操作失败,例如在没有互联网连接的情况下,我该如何获取信息?

最佳答案

CloudKit 操作有它们的 qualityOfService属性设置为 NSQualityOfServiceUtility默认情况下。

使用 NSQualityOfServiceUtility 的操作或 NSQualityOfServiceBackground可能被标记为使用 discretionary network requests .如果网络连接不佳,系统可以保留任意网络请求,因此您可能无法从服务器获得响应,直到情况改善并且系统发送请求。

如果您希望在所有情况下都立即发送您的请求,请设置 CKOperation.qualityOfServiceNSQualityOfServiceUserInitiatedNSQualityOfServiceUserInteractive .

关于ios - CKModifyRecordsOperation modifyRecordsCompletionBlock 未被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34239774/

相关文章:

ios - 尝试构建到设备后无法启动“<AppName>”

ios - 图像未显示在 collectionView 中

ios - 从 ios 中的 json 返回字典中读取整数值

ios - 删除 CKRecord 真的很困惑

ios - 用于从 cloudkit 中检索单列的代码模式/片段

iOS avaudiosession 无法在某些 iOS 硬件上启动

ios - UITableView reloadData 什么都不做(UITableView 不是 nil)

ios - iPhone - 为什么全屏不起作用但在 iPad 上却可以?

ios - 命令/usr/bin/codesign 失败,退出代码为 1?

core-data - CoreData+CloudKit iOS13 NSPersistentStoreRemoteChangeNotification