在我的CloudKit应用程序中,我在私有数据库中创建了一个区域,所有CKRecord都存储在那里。CKRecords 可以是 10 种不同的记录类型,其中一些可以附加 CKAsset。我使用CKFetchRecordZoneChangesOperation
查找该区域中的记录更改,并下载它们。我想优化CKFetchRecordZoneChangesOperation
,以便在下载中只包含desiredKeys
,所以我当时不下载 CKAsset,但似乎没有任何方法可以为每个记录类型指定它。相反,您似乎只能在CKFetchRecordZoneChangesOptions
上指定desiredKeys
,这是在 zoneID 上设置的。
那么,考虑到该区域中有不同类型的记录类型,如何在CKFetchRecordZoneChangesOperation
提取中指定"desiredKeys"呢?我在这里错过了一些简单的东西吗? 我想另一个(激烈的)选择是为每个记录类型创建一个记录区域,但如果可能的话,我不想走这条路。
谢谢。
唯一的选择是为每个记录类型的字段名称添加前缀。这样就可以为每个记录类型指定所需的键。
https://developer.apple.com/reference/cloudkit/ckfetchrecordzonechangesoptions/1640472-desiredkeys 指出:
var desiredKeys: [String]?
。
由于您提取的记录可以是不同的类型,因此数组应包含所请求记录的所有字段名称的合并集,并至少包含每种记录类型的一个字段名称。
。
你的观察是正确的。您也不能获取特定于记录类型的区域更改。