NSDictionaryの配列からNSPredicateを使って該当のNSDictionaryを抜き出す方法
背景
NSDictionaryの配列から該当のNSDictionaryを取得する際に今まではforループで1つ1つ判定して取得していたのだが速度が遅いのでNSPredicateを使って該当のNSDictionaryを取得する方法を調べた。
やり方
NSArrayのfilteredArrayUsingPredicateで取得したいNSDictionaryのKeyとValueを検索条件に入れて抽出できる。
NSDictionary *personDic1 = @{@"name": @"hachinobu", @"age": @28}; NSDictionary *personDic2 = @{@"name": @"suzuki", @"age": @40}; NSDictionary *personDic3 = @{@"name": @"honda", @"age": @27}; NSDictionary *personDic4 = @{@"name": @"samuragochi", @"age": @50}; NSArray *personArray = @[personDic1, personDic2, personDic3, personDic4]; NSPredicate *predicate = [NSPredicate predicateWithFormat:@"%K == %@", @"name", @"hachinobu"]; NSDictionary *resultDic = [[personArray filteredArrayUsingPredicate:predicate] firstObject]; NSLog(@"results:%@", resultDic);
出力
results:{ age = 28; name = hachinobu; }