Сортировать по нескольким свойствам с помощью Realm

Как я могу упорядочить результаты своего Realm, используя несколько свойств?

Сначала я сортирую их, используя одно свойство:

allShows = Show.allObjects().sortedResultsUsingProperty("dateStart", ascending: true)

Но теперь я также хочу сделать вторичный вид другим свойством "timeStart". Я пробовал вот так:

allShows = Show.allObjects().sortedResultsUsingProperty("dateStart", ascending: true).sortedResultsUsingProperty("timeStart", ascending: true)

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

+20
источник поделиться
5 ответов

В RealmSwift мы можем написать несколько таких свойств:

let sortProperties = [SortDescriptor(property: "dateStart", ascending: true), SortDescriptor(property: "timeStart", ascending: true)]
allShowsByDate = Realm().objects(MyObjectType).sorted(sortProperties)

Если вы хотите использовать больше свойств, вы можете добавить значения SortDescriptor() в массив.

+27
источник

Выяснилось так:

let sortProperties = [RLMSortDescriptor(property: "dateStart", ascending: true), RLMSortDescriptor(property: "timeStart", ascending: true)]
allShowsByDate = Show.allObjects().sortedResultsUsingDescriptors(sortProperties)
+16
источник

Вот как это делается с Realm 2.5

      dataArray = try! Realm().objects(Book.self)
        .sorted( by: [SortDescriptor(keyPath: "Author", ascending: true), SortDescriptor(keyPath: "Title", ascending: true)] )
+3
источник

я нашел решение.

var dataSource: Results<DLVCasting>! = nil
let realm = try! Realm()
let sortDescriptors = [SortDescriptor(property: "someValue", ascending: false)]
dataSource = realm.objects(MyClass.self).sorted(sortDescriptors);
dataSource = dataSource.sorted("anotherValue", ascending: false)

Но если вы помещаете несколько дескрипторов сортировки в массив, например, пример ниже

let sortDescriptors = [SortDescriptor(property: "someValue", ascending: false),SortDescriptor(property: "someValue", ascending: false)]

это не сработает. Я действительно не понимаю, почему.

+1
источник

Обновлен синтаксис Swift 4

let sortProperties = [SortDescriptor(keyPath: "queue"), SortDescriptor(keyPath: "name")]
let dogList = realm.objects(Dog.self).sorted(by: sortProperties)
0
источник

Посмотрите другие вопросы по меткам или Задайте вопрос