使用Realm按多个属性排序

时间:2014-12-08 19:56:06

标签: ios swift realm

如何使用多个属性订购我的Realm结果?

我首先使用这样的属性对它们进行排序:

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

但是现在我还想通过另一个属性“timeStart”进行二次排序。我试过这样:

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

这只会使结果仅由第二个属性排序。请帮忙。

5 个答案:

答案 0 :(得分:33)

在RealmSwift中,我们可以编写多个这样的属性:

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

如果要使用更多属性,可以将SortDescriptor()的值添加到数组中。

答案 1 :(得分:16)

像这样想出来:

let sortProperties = [RLMSortDescriptor(property: "dateStart", ascending: true), RLMSortDescriptor(property: "timeStart", ascending: true)]
allShowsByDate = Show.allObjects().sortedResultsUsingDescriptors(sortProperties)

答案 2 :(得分:3)

这是从Realm 2.5开始的。

[['a', 10], ['b', 6], ['c', 3]]

答案 3 :(得分:3)

已更新为Swift 4语法

let sortProperties = [SortDescriptor(keyPath: "queue"), SortDescriptor(keyPath: "name")]
let dogList = realm.objects(Dog.self).sorted(by: sortProperties)

答案 4 :(得分:1)

我找到了解决方案。

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)]

这不起作用。我真的不明白为什么。