优化 CKFetchRecordZoneChangesOperation 以获取 desiredKeys

Optimizing CKFetchRecordZoneChangesOperation to fetch desiredKeys

在我的 CloudKit 应用程序中,我在存储所有 CKRecords 的私有数据库中创建了一个区域。 CKRecords 可以是 10 种不同的记录类型,其中一些可以附加 CKAssets。我用CKFetchRecordZoneChangesOperation查找这个区的记录变化,下载下来。我想优化 CKFetchRecordZoneChangesOperation 以便我在下载中只包含 desiredKeys ,所以我当时不下载 CKAsset,但似乎没有任何方法可以指定这个记录类型。相反,您似乎只能在 CKFetchRecordZoneChangesOptions 上指定 desiredKeys,这是在 zoneID 上设置的。

考虑到该区域中有不同类型的记录类型,我如何在我的 CKFetchRecordZoneChangesOperation 提取中指定 'desiredKeys'?我在这里错过了一些简单的东西吗? 我想另一个(极端的)选项是为每种记录类型创建一个记录区域,但如果可能的话,我不想走这条路。

谢谢。

唯一的选择是为每种记录类型添加字段名称前缀。这使得为​​每个记录类型指定所需的键成为可能。

https://developer.apple.com/reference/cloudkit/ckfetchrecordzonechangesoptions/1640472-desiredkeys 状态:

var desiredKeys: [String]?

...

Because the records you fetch can be of different types, the array should contain the merged set of all field names for the requested records and include at least one field name from each record type.

...

您的观察是正确的。您也不能获取特定于记录类型的区域更改。