0

私は を持ってNSArrayNSDictionariesます。各辞書には、BOOL 値のキーがあります。

その配列を並べ替える必要があり、結果は 2 になるはずNSArraysです。1つは値が0の辞書で、もう1つは値が1の辞書です。

これを行う最善の方法は何ですか?

4

2 に答える 2

2

これがあなたの言いたいことかどうかはわかりませんが:

NSMutableArray *yesDicts = [NSMutableArray array];
NSMutableArray *noDicts = [NSMutableArray array];

for (NSDictionary *dict in array) {
    NSNumber *yesorno = dict[@"key"];
    if ([yesorno boolValue] == YES) {
        [yesDicts addObject:dict];
    } else {
        [noDicts addObject:dict];
    }
}

wherearrayは初期配列で、各 dict の BOOL 値は に格納され@"key"ます。また、新しい辞書アクセス構文を使用します

于 2013-02-18T10:16:34.233 に答える
1

NSPredicates「最良の」方法は、たとえば次のように使用することだと思います。

NSPredicate *yesPredicate = [NSPredicate predicateWithFormat:@"%K == %@", @"key", [NSNumber numberWithBool:YES]];
NSArray *filteredYESResults = [allResultsArray filteredArrayUsingPredicate:yesPredicate];

NSPredicate *noPredicate = [NSPredicate predicateWithFormat:@"%K == %@", @"key", [NSNumber numberWithBool:NO]];
NSArray *filteredNOResults = [allResultsArray filteredArrayUsingPredicate:noPredicate];
于 2013-02-18T10:23:02.177 に答える