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



我是使用CloudKit和数据库获取的新手,并且我查看了CKDataBaseOperation调用,因此我试图了解向数据库添加操作与在该数据库上使用"普通"函数调用之间的真正区别,如果它们或多或少都产生相同的结果。

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

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

概述:

CloudKit大多数任务都有 2 种做事方式:

  • 方便的 API(带有完成处理程序的函数)
  • 操作

1.便利的接口

优势:

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

缺点:

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

阿拉伯数字。操作:

优势:

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

弊:

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

示例 1(提取):

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

示例 2(保存/更新):

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

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

参考:

  • https://developer.apple.com/library/content/documentation/DataManagement/Conceptual/CloudKitQuickStart/Introduction/Introduction.html#//apple_ref/doc/uid/TP40014987-CH1-SW1
  • 观看 WWDC 云套件视频
  • 可能有助于学习和观看有关Operation的WWDC视频(以前称为NSOperation)

最新更新