我有一个ID数组:[INT]。现在我想选择具有这些ID的所有对象,但需要遵循IDs数组中的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进行排序。有什么方法可以将这些对象排序到正确的顺序吗?
答案 0 :(得分:5)
您可以使用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($0.id) < IDs.indexOf($1.id) })
} catch {
}
答案 1 :(得分:0)
在领域中,Results
符合RealmCollectionType
协议,该协议具有sorted(_:)
成员函数。此函数采用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"])