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