我是使用 CloudKit 和数据库获取的新手,并且我已经研究过 CKDataBaseOperation 调用,因此我试图了解向数据库添加操作与使用“正常”函数调用之间的真正区别数据库,如果它们都产生或多或少相同的结果。
为什么添加操作比函数调用更可取?在什么情况下?
感谢您帮助我理解这一点。我正在尝试尽可能多地了解 Swift。
最佳答案
概述:
在CloudKit
中,大多数任务都有两种执行方式:
- 便捷 API(带有完成处理程序的函数)
- 运营
1。便捷的 API
优点:
- 顾名思义,使用起来很方便
缺点:
- 通常需要更多服务器请求。
- 无法构建依赖项
2。操作:
优点:
- 更多可配置和更多选项。
- 需要较少的服务器请求(更适合您的服务器请求配额)
- 它是使用Operation构建的,因此您可以获得Operation的所有功能,例如依赖项(您将在真正的应用程序中需要它们)
缺点:
- 使用起来不太方便,需要创建操作。编码需要更多时间,但非常值得。
示例 1(获取):
- 如果您使用
CKDatabase.fetch
,则需要指定要提取的记录 ID。 - 如果您使用
CKQueryOperation
,您可以根据字段值进行查询。
示例 2(保存/更新):
- 如果您使用
CKDatabase.save
,则每次函数调用都可以保存 1 条记录。每个函数调用都会产生一个单独的服务器请求。如果要保存 200 条记录,则必须循环运行它,并且会发出 200 个服务器请求,这不是很有效。 CloudKit 对每秒可以发出的服务器请求数量也有限制。这样您很快就会耗尽配额。 - 如果您使用
CKModifyRecordsOperation
,您可以通过将其作为数组传递来一次保存 200 条记录*。因此,您发出的服务器请求将会少得多。
*注意:服务器对一次请求中可以保存的记录数量施加了限制,但这绝对比创建单独的请求来保存每条记录要好。
引用:
- https://developer.apple.com/library/content/documentation/DataManagement/Conceptual/CloudKitQuickStart/Introduction/Introduction.html#//apple_ref/doc/uid/TP40014987-CH1-SW1
- 观看 WWDC CloudKit 视频
- 可能有助于学习和观看有关
Operation
的 WWDC 视频(之前称为NSOperation
)
关于ios - CKQueryOperation 和 Perform(Fetch...) 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44228671/