Каков наилучший метод получения CKReferences в CloudKit?

В моей настройке CloudKit у меня есть Person тип записи и каждый человек имеет Friend атрибут, который является CKReference другому Person объект.

Я все достаю PersonCKRecords. Я перечисляю этих людей в таблице и перечисляю их друзей вместе с ними. В настоящее время я просто беру CKReference и индивидуально получить каждого друга, используя recordID,

Это единственный способ, который я вижу, но какова будет лучшая практика? Особенно потому, что я собираю потенциально очень большое количество друзей. Кажется нелогичным извлекать все эти объекты индивидуально.

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

2 ответа

Решение

Вы можете использовать предикатный запрос "in" для получения нескольких идентификаторов. Вы можете определить предикат следующим образом:

NSPredicate(format: "To_ID in %@", [recordIdMe, recordIdOther])!

В вашем случае, когда вы видите recordIdMe а также recordIdOther у вас должен быть массив действительных CKReference объекты.

В CloudKit нет функции для автоматического получения связанных записей.

На самом деле вы должны собрать все RecordIDs и добавить CKFetchRecordsOperation к соответствующему объекту базы данных.

Вы получаете обратно словарь, чтобы помочь вам сопоставить результаты с исходным списком.

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