首页 > 解决方案 > 如何根据布尔属性对领域结果进行排序

问题描述

我已经尝试使用自定义模式进行排序。但是因为它返回一个数组。这没有帮助。因为我需要返回类型为结果。

例如:考虑以下:

class A:Object {
    dynamic var name: String = "abc"
    dynamic var isStrong: Bool = false
}

现在我怎样才能对上面的结果进行排序

我确实尝试过

realm.objects(a.self).sorted({ (o1, o2) -> Bool in
    return o1.isStrong && !o2.isStrong
})

这将产生一个排序数组。但我需要一个 realmResults 对象。任何形式的帮助都是值得赞赏的。谢谢你。:)

标签: swiftrealmresultsetrealm-mobile-platform

解决方案


您可以使用bool属性对Results实例进行排序,但不能实现将返回的自定义排序函数ResultsResults仅支持基于类的实例属性或将多个实例属性添加到SortDescriptor.

即使您无法定义自定义排序逻辑,但您当前的逻辑似乎仅实现了基于单个bool属性的降序排序,因此您可以使用 Realm 的内置sorted(byKeyPath:,ascending:)方法获得相同的结果。

realm.objects(A.self).sorted(byKeyPath: "isStrong",ascending: false)

推荐阅读