优化 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 以获取所需键的主要内容,如果未能解决你的问题,请参考以下文章

iOS性能优化总结

MySql性能优化查询优化

SEO优化:网站页面优化URL优化内部链接优化

MySQL 进阶 索引 -- SQL优化(插入数据优化:导入本地文件数据主键优化order by优化group by优化limit优化count优化update优化)

优化性能和优化内存有啥区别?

Mysql性能优化----SQL语句优化索引优化数据库结构优化系统配置优化服务器硬件优化