Оптимизация 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]?

...

Поскольку извлекаемые записи могут быть разных типов, массив должен содержать объединенный набор всех имен полей для запрошенных записей и включать как минимум одно имя поля из каждого типа записи.

...

Ваше наблюдение верно. Вы также не можете получить изменения зоны, относящиеся к типу записи.

Другие вопросы по тегам