CKQueryOperation 可见性、取消和超时可能性
CKQueryOperation visibility, cancellation and timeout possibilities
我的应用程序需要 运行 使用 CKDatabase 的 CKQueryOperation。这需要并不总是可用的网络访问。
一旦我将 CKQueryOperation 添加到 CKDatabase 中,它就是我的控件停止的地方。
有什么办法可以吗:
- 查看特定于 CKDatabase 的所有未决操作。
- 将操作添加到 CKDatabase 后取消操作?
- 设置完成超时,以便在网络阻止完成时操作不会保持挂起状态?
我知道我可以使用 CKDatabase performQuery 来做到这一点,但是如果可能的话我更愿意使用操作,在此先感谢您的帮助!
对于超时,您可以在 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
}
...
}
默认超时为 60 秒。
我的应用程序需要 运行 使用 CKDatabase 的 CKQueryOperation。这需要并不总是可用的网络访问。
一旦我将 CKQueryOperation 添加到 CKDatabase 中,它就是我的控件停止的地方。
有什么办法可以吗:
- 查看特定于 CKDatabase 的所有未决操作。
- 将操作添加到 CKDatabase 后取消操作?
- 设置完成超时,以便在网络阻止完成时操作不会保持挂起状态?
我知道我可以使用 CKDatabase performQuery 来做到这一点,但是如果可能的话我更愿意使用操作,在此先感谢您的帮助!
对于超时,您可以在 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
}
...
}
默认超时为 60 秒。