hachinoBlog

hachinobuのエンジニアライフ

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; }

関連記事

配列からNSPredicate条件を使ってデータを抽出する方法