2

我在我的应用程序中使用 CloudKit。要从 iCloud 中检索所有更改,我使用操作 CKFetchRecordZoneChangesOperation。当我在没有活动 Internet 连接的情况下添加此操作时,永远不会调用 fetchRecordZoneChangesCompletionBlock。

我确实希望调用此完成块时出现错误 CKError.networkUnavailable。

我正在使用 swift 3。

我可能误解了一些事情。有人可以解释我错过了什么吗?

4

1 回答 1

2

CK操作文档

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
于 2017-07-30T03:25:26.210 回答