IDの配列:[INT]があります。今度は、これらのIDを持つすべてのオブジェクトを選択したいが、ID配列のidの順序に従う必要がある。レルムとNSPredicateを使用して配列インデックスで並べ替え
let IDs = [2, 6, 3, 4, 10, 9]
let predicate = NSPredicate(format: "id IN %@", IDs)
let objects = realm.objects(Item.self).filter(predicate)
しかし、結局、オブジェクトはIDの異なる方法で並べ替えられました。このオブジェクトを正しい順序で並べ替えることができる方法はありますか?
このアプローチは、並べ替え操作を実行するためのクエリに一致するすべての単一のオブジェクトのスウィフトクラスインスタンスを実体化します。この熱心なマテリアライゼーションを避けるには、 'Results.sorted(_ :)'を使用してください。ただし、Realmでサポートされていないカスタムソートアルゴリズムを適用する場合は、この方法が適しています(必要な場合もあります)。 – jpsim
ありがとうございます。これは機能します。ただし、.sortを使用する前にすべてのオブジェクトを具体化する必要があります。 Results.sortedはID配列内のidの順序を検出することはできません。 – mashix
質問はカスタムソートアルゴリズムを求めているので、オブジェクトをマテリアライズする方法はありません。 – joern