CKModifyRecordsOperation修改RecordsCompletionBlock未被调用

2024-01-06

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

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

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 or NSQualityOfServiceBackground可以标记为使用酌情网络请求 https://developer.apple.com/library/ios/documentation/Foundation/Reference/NSURLSessionConfiguration_class/index.html#//apple_ref/occ/instp/NSURLSessionConfiguration/discretionary。如果网络连接较差,系统可以保留任意网络请求,因此在情况改善并且系统发送请求之前,您可能无法收到服务器的响应。

如果您希望在所有情况下都立即发送请求,请设置CKOperation.qualityOfService to NSQualityOfServiceUserInitiated or NSQualityOfServiceUserInteractive.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CKModifyRecordsOperation修改RecordsCompletionBlock未被调用 的相关文章

随机推荐