もちろん、関係によって返されるセットに述語とソート記述子を適用することもできます。セットが比較的小さい場合は、簡単で非常に迅速です (メモリ内で行われるため、すべてのオブジェクトをフェッチする必要があります)。I/O の回数を制限するために、前もってバッチ フェッチを実行することをお勧めします。
データベースのサイズとマネージャー (およびインデックス作成) の下の従業員の数に応じて、データベース レベルですべてを実行したい場合があります...
// We want "Employee" objects
NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"Employee"];
// Assuming the "inverse" relationship from employee-to-manager is "manager"...
// We want all employees that have "our" manager, and a salary > 10000
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"(manager == %@) AND (salary > 10000", manager];
// Sort all the matches by salary, little-to-big
fetchRequest.sortDescriptors = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"salary" ascending:YES]];
// Limit the returned set to 1 object, which will be the smallest
fetchRequest.fetchLimit = 1;
これにより、データベース レベルでクエリ全体が実行され、1 つのオブジェクトのみが返されます。
いつものように、パフォーマンスの問題は通常、モデルのレイアウト、およびモデルとその関係を指定するために使用されるオプションに大きく依存します。