Извлечь объект CKReference из CKReference

У меня есть 3 типа записей, которые содержали такие атрибуты:

клиент

Имя пользователя: строка

ProfilImage: UIImage

Комментарий

Пользователь: Ссылка клиента

Сообщение: Строка

Магазин

Комментарии: Список ссылок на комментарии

Могу ли я получить имя пользователя клиента и ProfilImage из объекта Shop CKRecord? Могу ли я сделать этот путь:

  1. Получить ссылки на комментарии из Record of Shop
  2. Получить ссылку на пользователя из каждой найденной ссылки на комментарий
  3. И, наконец, извлеките имя пользователя и профиль из пользовательской ссылки из комментария из справочника магазина.

Если есть путь, каков наилучший способ сделать это?

1 ответ

Решение

Вот пример для шага 1. Другие шаги будут аналогичны шагам, которые вы перечислили, каскадируя результаты каждого предыдущего шага. (ПРИМЕЧАНИЕ. Нет необходимости в явных полях CKReference, поскольку их можно извлечь из переменных CKRecord, но я хотел сделать пример более читабельным)

struct Shop {
  // other variables....
  var record : CKRecord?
  var commentRef : CKReference?
}

struct Comment {
  // other variables....
  var record : CKRecord?
  var clientRef : CKReference?
}

var shops : [Shop]
var comments : [Comment]

func commentsWithReference(ref: CKReference) -> [Comment] {
  let matchingComments = comments.filter {$0.record!.recordID == ref.recordID }
  return matchingComments
}

let shopComments = shops.map { commentsWithReference($0.commentRef!) }
Другие вопросы по тегам