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

时间:2017-05-28 14:56:59

标签: ios cloudkit

我刚开始使用CloudKit和数据库提取,我查看了CKDataBaseOperation调用,所以我试图理解在向数据库添加操作和使用“正常”函数调用之间的真正区别数据库,如果它们或多或少都产生相同的结果。

为什么在函数调用和什么情况下更适合添加操作?

感谢您帮助我理解这一点。我正尽力学习Swift。

1 个答案:

答案 0 :(得分:3)

概述:

CloudKit中,大多数任务都有两种处理方式:

  • 便利API(具有完成处理程序的功能)
  • 操作

1。便利API

优点:

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

缺点:

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

2。操作:

优点:

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

缺点:

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

示例1(获取):

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

示例2(保存/更新):

  • 如果使用CKDatabase.save,则每次调用函数都可以保存1条记录。每个函数调用都会产生一个单独的服务器请求。如果要保存200条记录,则必须在循环中运行它,并且会产生200个服务器请求,这些请求效率不高。 CloudKit还限制了您每秒可以进行的服务器请求数。这样你就可以很快耗尽你的配额。
  • 如果您使用CKModifyRecordsOperation,则可以一次性保存200条记录*,方法是将其作为数组传递。所以你要做的服务器请求要少得多。

*注意:服务器对1个请求中可以保存的记录数量施加限制,但肯定比创建保存每条记录的单独请求更好。

参考: