IOS:没有互联网连接时未调用 fetchRecordZoneChangesCompletionBlock
Posted
技术标签:
【中文标题】IOS:没有互联网连接时未调用 fetchRecordZoneChangesCompletionBlock【英文标题】:IOS: fetchRecordZoneChangesCompletionBlock not called when no internet connection 【发布时间】:2017-07-29 20:15:33 【问题描述】:我在我的应用程序中使用 CloudKit。要从 iCloud 中检索所有更改,我使用操作 CKFetchRecordZoneChangesOperation。当我在没有活动 Internet 连接的情况下添加此操作时,永远不会调用 fetchRecordZoneChangesCompletionBlock。
我确实希望调用此完成块时出现错误 CKError.networkUnavailable。
我正在使用 swift 3。
我可能误解了一些事情。有人可以解释我缺少什么吗?
【问题讨论】:
【参考方案1】:CKOperation Documentation
CKOperation 对象的默认服务质量级别为 NSQualityOfServiceUtility。此时的操作 级别被认为是任意的,并由系统安排 根据电池电量和其他因素获得最佳时间。在 iPhone,低功耗模式时可暂停任意活动 已启用。
您需要做的是手动将CKFetchRecordZoneChangesOperation
的QoS设置为.userInitiated
// userInitiated: Used for performing work that has been explicitly requested by the user,
// and for which results must be immediately presented in order to allow for further user interaction.
// For example, loading an email after a user has selected it in a message list.
//
// set to userInitiated make sure the completion with error will immediately returned if currently no internet connection
zoneOperation.qualityOfService = .userInitiated
【讨论】:
以上是关于IOS:没有互联网连接时未调用 fetchRecordZoneChangesCompletionBlock的主要内容,如果未能解决你的问题,请参考以下文章
SDCAlertView 回调 clickButtonAtIndex 在 iOS 运行时未被调用
在 iOS 8 中重新加载时未调用 UICollectionview cellForItemAtIndexPath