Каков наилучший метод получения CKReferences в CloudKit?
В моей настройке CloudKit у меня есть Person
тип записи и каждый человек имеет Friend
атрибут, который является CKReference
другому Person
объект.
Я все достаю Person
CKRecord
s. Я перечисляю этих людей в таблице и перечисляю их друзей вместе с ними. В настоящее время я просто беру CKReference
и индивидуально получить каждого друга, используя recordID
,
Это единственный способ, который я вижу, но какова будет лучшая практика? Особенно потому, что я собираю потенциально очень большое количество друзей. Кажется нелогичным извлекать все эти объекты индивидуально.
Мне было интересно, если есть метод, очень похожий на CoreData, где вы можете выбрать для получения связанных объектов в основной выборке? Так, например, когда я получаю Person
он автоматически выбирал друзей тоже.
2 ответа
Вы можете использовать предикатный запрос "in" для получения нескольких идентификаторов. Вы можете определить предикат следующим образом:
NSPredicate(format: "To_ID in %@", [recordIdMe, recordIdOther])!
В вашем случае, когда вы видите recordIdMe
а также recordIdOther
у вас должен быть массив действительных CKReference
объекты.
В CloudKit нет функции для автоматического получения связанных записей.
На самом деле вы должны собрать все RecordIDs и добавить CKFetchRecordsOperation
к соответствующему объекту базы данных.
Вы получаете обратно словарь, чтобы помочь вам сопоставить результаты с исходным списком.