优化 CKFetchRecordZoneChangesOperation 以获取所需键
Posted
技术标签:
【中文标题】优化 CKFetchRecordZoneChangesOperation 以获取所需键【英文标题】:Optimizing CKFetchRecordZoneChangesOperation to fetch desiredKeys 【发布时间】:2017-05-02 19:50:57 【问题描述】:在我的 CloudKit 应用程序中,我在存储所有 CKRecords 的私有数据库中创建了一个区域。 CKRecords 可以是 10 种不同的记录类型,其中一些可以附加 CKAsset。我使用CKFetchRecordZoneChangesOperation
查找该区域的记录更改,并下载它们。我想优化CKFetchRecordZoneChangesOperation
,以便我在下载中只包含desiredKeys
,所以我当时不下载CKAsset,但似乎没有任何方法可以为每个记录类型指定这个。相反,您似乎只能在 zoneID 上设置的CKFetchRecordZoneChangesOptions
上指定desiredKeys
。
那么,考虑到该区域中有不同类型的记录类型,我如何在我的CKFetchRecordZoneChangesOperation
提取中指定“desiredKeys”?我在这里错过了一些简单的东西吗?
我猜的另一个(极端)选项是为每种记录类型创建一个记录区域,但如果有可能,我不想走这条路。
谢谢。
【问题讨论】:
我最终使用 CKQueryOperation 来获取不同的记录类型,因此我能够使用desiredKeys
属性来排除适当地下载CKAssets。
【参考方案1】:
唯一的选择是为每种记录类型添加字段名称的前缀。这样就可以为每种记录类型指定所需的键。
https://developer.apple.com/reference/cloudkit/ckfetchrecordzonechangesoptions/1640472-desiredkeys 状态:
var desiredKeys: [字符串]?
...
由于您获取的记录可以是不同的类型,因此数组应该包含请求记录的所有字段名称的合并集,并且每个记录类型至少包含一个字段名称。 p>
...
您的观察是正确的。您也无法获取特定于记录类型的区域更改。
【讨论】:
以上是关于优化 CKFetchRecordZoneChangesOperation 以获取所需键的主要内容,如果未能解决你的问题,请参考以下文章
MySQL 进阶 索引 -- SQL优化(插入数据优化:导入本地文件数据主键优化order by优化group by优化limit优化count优化update优化)