Оптимизация CKFetchRecordZoneChangesOperation для получения желаемых ключей
В моем приложении CloudKit я создаю одну зону в частной базе данных, где хранятся все CKRecords. CKRecords может иметь 10 различных типов записей, и к некоторым из них могут быть прикреплены наборы CKA. я использую CKFetchRecordZoneChangesOperation
найти записи об изменениях в этой зоне и скачать их. Я хочу оптимизировать CKFetchRecordZoneChangesOperation
так что я включаю только desiredKeys
в загрузке, поэтому я не загружаю CKAsset в то время, но, кажется, нет никакого способа указать это для каждого типа записи. Вместо этого кажется, что вы можете только указать desiredKeys
на CKFetchRecordZoneChangesOptions
, который установлен на zoneID.
Итак, как я могу указать "требуемые ключи" на моем CKFetchRecordZoneChangesOperation
получить, учитывая, что в этой зоне есть разные типы записей? Я что-то упускаю здесь? Я полагаю, что другой (радикальный) вариант - создать зону записи для каждого типа записи, но я бы не хотел идти по этому пути, если возможна альтернатива.
Благодарю.
1 ответ
Единственным вариантом является префикс ваших имен полей для каждого типа записи. Это позволяет указать нужные ключи для каждого типа записи.
https://developer.apple.com/reference/cloudkit/ckfetchrecordzonechangesoptions/1640472-desiredkeys заявляет:
var требуемые ключи: [String]?
...
Поскольку извлекаемые записи могут быть разных типов, массив должен содержать объединенный набор всех имен полей для запрошенных записей и включать как минимум одно имя поля из каждого типа записи.
...
Ваше наблюдение верно. Вы также не можете получить изменения зоны, относящиеся к типу записи.