CKQueryOperation 可见性、取消和超时可能性
Posted
技术标签:
【中文标题】CKQueryOperation 可见性、取消和超时可能性【英文标题】:CKQueryOperation visibility, cancellation and timeout possibilities 【发布时间】:2015-09-24 20:55:03 【问题描述】:我的应用程序需要使用 CKDatabase 运行 CKQueryOperation。这需要网络访问,但并不总是可用。
一旦我将 CKQueryOperation 添加到 CKDatabase 中,我的控制就会停止。
有没有办法:
-
查看特定于 CKDatabase 的所有待处理操作。
将操作添加到 CKDatabase 后取消操作?
设置完成超时,以便在网络阻止完成时操作不会保持挂起?
我知道我可以使用 CKDatabase performQuery 来做到这一点,但是如果可能的话,我更愿意使用操作,提前感谢您的帮助!
【问题讨论】:
关于数字 2:我没有尝试过,但我认为这是可能的,因为 a) Apple 在文档中说:“您指定的任何完成块都应该准备好处理操作失败完成其任务,无论是由于错误还是明确取消。” b) 因为 CKQueryOperation 继承自 NSOperation。所以你可能会(或已经做过?)尝试[操作取消]。 【参考方案1】:对于超时,您可以在 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 秒。
【讨论】:
以上是关于CKQueryOperation 可见性、取消和超时可能性的主要内容,如果未能解决你的问题,请参考以下文章
使用PyQt中的QCheckBox或QComboBox更改小部件可见性