Царство: сортировка по свойству в дочернем объекте

Мой объект Показать выглядит следующим образом:

class Show: RLMObject {
    dynamic var venue: Venue?
}

и мой объект объекта:

class Venue: RLMObject {
    dynamic var title = ""
}

Мне нужно иметь возможность сортировать объекты Show по их названиям объектов Venue. Я попробовал следующее, но получил ошибку:

allShowsByLocation = Show.allObjects().sortedResultsUsingProperty("venue.title", ascending: true)

Ошибка: Недопустимый столбец сортировки ', причина:' Столбец с именем '(null)' не найден.

Ответ 1

Царство еще не поддерживает сортировку RLMResults по свойству. В качестве обхода вы можете запросить Venue и вернуть свой связующий объект для каждого индекса:

allVenues = Venue.allObjects().sortedResultsUsingProperty("title", ascending: true)

func showAtIndex(index: UInt) -> Show {
  return (allVenues[index] as Venue).linkingObjectsOfClass("Show", forProperty: "venue")
}

Или вы можете просто добавить свойство venueTitle к вашей модели Show, которая затем позволит вашему запросу работать:

allShowsByLocation = Show.allObjects().sortedResultsUsingProperty("venueTitle", ascending: true)

Вы также можете подписаться на проблему GitHub # 1199, чтобы следить за нашим прогрессом в поддержке сортировки суб-свойств.

Ответ 2

Мне очень грустно, когда Realm не поддерживает эту функцию. Я попробую другое решение для этой проблемы, и он хорошо работает

  • копировать все объекты в RLMResults в массив
  • Сортировка югу от объекта в массиве с использованием сравнения