1

辞書でいっぱいの NSArray があります。

それをループして、別の配列内に存在する文字列オブジェクトのいずれかに一致するキー値を持つすべての辞書を見つけたいと思います。

次に、これを、見つかったすべてのオブジェクトの新しい結果配列に追加します。

これが私が今やっている方法ですが、これを行うためのより効率的で高速な方法があるかどうかを知りたかったのです。

NSArray *arrayOfDictionaries, *arrayOfIDs;

NSMutableArray *results = [NSMutableArray array];

for (NSDictionary *dict in arrayOfDictionaries) {

    for (NSString *userID in arrayOfIDs) {

        if ([userID isEqualToString:dict[@"user_id"]]) {

            [results addObject:dict];

        }
    }
}

return results;
4

2 に答える 2

1

さらに進んで、イニシャルをフィルタリングし、NSArray一連のインデックスを取得できます。

NSIndexSet *results = [NSIndexSet indexSet];    

results = [arrayOfDictionaries indexesOfObjectsPassingTest:^BOOL(NSDictionary* obj, NSUInteger idx, BOOL *stop) {
    return [arrayOfIDs containsObject:obj[@"user_id"]];
}];

の代わりにfor yourcontainsObjectを使用すると、改善される可能性があることに注意してください。NSSetarrayOfIDsNSArray

配列をフィルタリングするためのオプションがさらに必要な場合は、このスタックオーバーフロー スレッドを確認してください。

于 2013-11-05T09:50:52.970 に答える