我是使用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
)