使用 Realm 和 NSPredicate 按数组索引排序
Sort by array index using Realm and NSPredicate
我有一个 ID 数组:[INT]。现在我想 select 所有对象都具有这些 ID,但需要遵循 ID 数组中 ID 的顺序。
let IDs = [2, 6, 3, 4, 10, 9]
let predicate = NSPredicate(format: "id IN %@", IDs)
let objects = realm.objects(Item.self).filter(predicate)
但最终,对象是通过 ID 以不同的方式排序的。有什么方法可以让我按照正确的顺序对这些对象进行排序?
您可以使用 sort()
:
let IDs = [2, 6, 3, 4, 10, 9]
let predicate = NSPredicate(format: "id IN %@", IDs)
do {
let realm = try Realm()
let objects = realm.objects(Item).filter(predicate).sort({ IDs.indexOf([=10=].id) < IDs.indexOf(.id) })
} catch {
}
在 Realm 中,Results
符合 RealmCollectionType
协议,它有一个 sorted(_:)
member function. This function takes a sequence of SortDescriptor
s,也就是 StringLiteralConvertible
,这使得它们非常容易使用:
let realm = try! Realm()
let IDs = [2, 6, 3, 4, 10, 9]
let objects = realm.objects(Item).filter("id IN %@", IDs).sorted(["id"])
我有一个 ID 数组:[INT]。现在我想 select 所有对象都具有这些 ID,但需要遵循 ID 数组中 ID 的顺序。
let IDs = [2, 6, 3, 4, 10, 9]
let predicate = NSPredicate(format: "id IN %@", IDs)
let objects = realm.objects(Item.self).filter(predicate)
但最终,对象是通过 ID 以不同的方式排序的。有什么方法可以让我按照正确的顺序对这些对象进行排序?
您可以使用 sort()
:
let IDs = [2, 6, 3, 4, 10, 9]
let predicate = NSPredicate(format: "id IN %@", IDs)
do {
let realm = try Realm()
let objects = realm.objects(Item).filter(predicate).sort({ IDs.indexOf([=10=].id) < IDs.indexOf(.id) })
} catch {
}
在 Realm 中,Results
符合 RealmCollectionType
协议,它有一个 sorted(_:)
member function. This function takes a sequence of SortDescriptor
s,也就是 StringLiteralConvertible
,这使得它们非常容易使用:
let realm = try! Realm()
let IDs = [2, 6, 3, 4, 10, 9]
let objects = realm.objects(Item).filter("id IN %@", IDs).sorted(["id"])