CKQueryOperation可见性,取消和超时可能性

Tim*_*mbo 5 ios icloud swift cloudkit

我的应用程序需要使用CKDatabase运行CKQueryOperation.这需要网络访问并不总是可用.

一旦我将CKQueryOperation添加到CKDatabase,这是关于我的控件停止的位置.

有没有办法可以:

  1. 查看特定于CKDatabase的所有待处理操作.
  2. 将操作添加到CKDatabase后取消操作?
  3. 设置完成超时,以便在网络阻止完成时操作不会保持挂起状态?

我知道我可以用CKDatabase performQuery做到这一点但是我希望尽可能使用操作,提前感谢您的帮助!

Vla*_*lad 4

对于超时,您可以在 CKQueryOperation 上设置配置对象:

let config = CKOperation.Configuration()
config.timeoutIntervalForRequest = 5
config.timeoutIntervalForResource = 5

// Config operation
let operation = CKQueryOperation(query: query)
operation.configuration = config
operation.other_stuff..
operation.queryCompletionBlock = { (_, error: Error?) in
        guard error == nil else {
            // Handle timeout error here.
            return
        }
        ...
 }
Run Code Online (Sandbox Code Playgroud)

默认超时为 60 秒。