ios - CKQueryOperation 和 Perform(Fetch...) 之间的区别

标签 ios cloudkit

我是使用 CloudKit 和数据库获取的新手,并且我已经研究过 CKDataBaseOperation 调用,因此我试图了解向数据库添加操作与使用“正常”函数调用之间的真正区别数据库,如果它们都产生或多或少相同的结果。

为什么添加操作比函数调用更可取?在什么情况下?

感谢您帮助我理解这一点。我正在尝试尽可能多地了解 Swift。

最佳答案

概述:

CloudKit中,大多数任务都有两种执行方式:

  • 便捷 API(带有完成处理程序的函数)
  • 运营

1。便捷的 API

优点:

  • 顾名思义,使用起来很方便

缺点:

  • 通常需要更多服务器请求。
  • 无法构建依赖项

2。操作:

优点:

  • 更多可配置和更多选项。
  • 需要较少的服务器请求(更适合您的服务器请求配额)
  • 它是使用Operation构建的,因此您可以获得Operation的所有功能,例如依赖项(您将在真正的应用程序中需要它们)

缺点:

  • 使用起来不太方便,需要创建操作。编码需要更多时间,但非常值得。

示例 1(获取):

  • 如果您使用CKDatabase.fetch,则需要指定要提取的记录 ID。
  • 如果您使用CKQueryOperation,您可以根据字段值进行查询。

示例 2(保存/更新):

  • 如果您使用CKDatabase.save,则每次函数调用都可以保存 1 条记录。每个函数调用都会产生一个单独的服务器请求。如果要保存 200 条记录,则必须循环运行它,并且会发出 200 个服务器请求,这不是很有效。 CloudKit 对每秒可以发出的服务器请求数量也有限制。这样您很快就会耗尽配额。
  • 如果您使用CKModifyRecordsOperation,您可以通过将其作为数组传递来一次保存 200 条记录*。因此,您发出的服务器请求将会少得多。

*注意:服务器对一次请求中可以保存的记录数量施加了限制,但这绝对比创建单独的请求来保存每条记录要好。

引用:

关于ios - CKQueryOperation 和 Perform(Fetch...) 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44228671/

相关文章:

ios - Cosmic Mind - 实现 TabsController 时如何调整 View 大小

arrays - 从 cloudkit-query 获取结果

ios - 发布更新 CKRecord

ios - 无论如何,有没有要从APNS注销的信息?

javascript - 一页内的 Phonegap 页面转换

javascript - 回调Javascript PostMessage iOS Swift

ios - 在 Facebook iOS SDK 中找不到 FBDialogClosePNG.h

ios - 从 NSError 获取部分错误

ios - 动画完成时隐藏 UIProgressView

ios - 检查公共(public) CloudKit 数据库中记录的所有权