我正在使用面向iOS 8并使用Realm的Swift 2.2编写应用程序.我允许用户使用各种可选属性对对象进行排序Results.sorted(_:ascending:).这对于降序排序非常有效,但对于升序排序,nil首先放置的值看起来不正确.许多数据库系统都有一个NULLS FIRST/LAST选项和CoreData,它看起来可能是子类NSSortDescriptor.nil在Realm中排序时,有没有办法始终将值放在最后?即使只有一个hacky策略,也会受到赞赏.
Results除了Results.sorted(_:ascending:)方法提供的内容之外,Realm不支持自定义排序.但是你可以通过连接两个查询来相当容易地编写它,甚至可以通过计算属性公开它:
var results: [MyModel] {
let sorted = realm.objects(MyModel).sorted("...", ascending: true)
return sorted.filter("optionalProperty != nil") +
sorted.filter("optionalProperty == nil")
}
Run Code Online (Sandbox Code Playgroud)