取消 CloudKit 正在进行的查询

Cancel CloudKit Query In Progress

是否可以取消当前正在进行且未完成的 CloudKit 查询操作?例如,假设我有一个应用程序,用户可以在其中输入电子邮件地址,然后点击搜索按钮。然后,该应用程序将继续搜索 CKDatabase 中存储的大量电子邮件地址。如果应用程序要显示一个 UIView 来通知用户 "Currently searching for (insert email address)",并且还有一个取消按钮以防查询时间过长。有没有办法让用户点击那个取消按钮,然后执行一些代码来取消 CloudKit 当前正在执行的查询?

我问的原因是我目前正在开发的 iOS 应用程序也有类似情况。通常一切都运行良好且速度非常快,但在某些情况下,我要么立即意识到我输入了错误的电子邮件地址并需要取消,要么当我在 iPhone 上使用手机网络完成测试时,查询可能比在 wifi 上花费更长的时间。

我想一定有办法做到这一点,对吧?任何可以提供答案或指出正确方向的人都将不胜感激!

假设您使用的是 CKQueryOperation,只要您有对操作的引用,就可以调用 cancel

然后您应该正确处理在完成块中产生的 CKErrorOperationCancelled 错误。