NSArray にフィルタリング
CoreData に伴って導入された Predicate というクエリー言語。なにもデータベースにアクセスする時だけ使うのではなくて、NSArray から条件にあったものだけを抽出したりするのにも使えます。
// NSArray -(NSArray*) filteredArrayUsingPredicate:(NSPredicate*)predicate
詳しくは、Predicate のドキュメントにたくさんサンプルがのっていますけれど、NSArray の要素そのもの(例えば NSString の配列とか)だけでなく、要素のさらに要素(つまり、NSDictionary の要素とか、KVC の要素とか)にまで条件を掘り下げることができるので便利です。
NSArray* arr = [NSArray arrayWithObjects: [NSDictionary dictionaryWithObjectsAndKeys:@"Tom", @"Name", nil], [NSDictionary dictionaryWithObjectsAndKeys:@"Bob", @"Name", nil], nil]; // "Name" が "Tom" の要素だけを抽出 NSPredicate* predicate = [NSPredicate predicateWithFormat:@"Name=%@", @"Tom"]; NSArray* filteredArray = [arr filteredArrayUsingPredicate:predicate]; // => filteredArray ( { Name = Tom; } )