使用Realm和NSPredicate按数组索引排序

mas*_*hix 5 realm nspredicate

我有一个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)
Run Code Online (Sandbox Code Playgroud)

但最后,对象以不同的方式使用ID进行排序.有什么方法可以将这些对象排序到正确的顺序吗?

joe*_*ern 6

你可以使用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 {        
}
Run Code Online (Sandbox Code Playgroud)