如何使用多个属性订购我的Realm结果?
我首先使用这样的属性对它们进行排序:
allShows = Show.allObjects().sortedResultsUsingProperty("dateStart", ascending: true)
但是现在我还想通过另一个属性“timeStart”进行二次排序。我试过这样:
allShows = Show.allObjects().sortedResultsUsingProperty("dateStart", ascending: true).sortedResultsUsingProperty("timeStart", ascending: true)
这只会使结果仅由第二个属性排序。请帮忙。
答案 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)]
这不起作用。我真的不明白为什么。