将带有NSDictionaries的NSArray整理成2个NSArrays

时间:2013-02-18 10:11:04

标签: ios objective-c nsarray nsdictionary

我有NSArray NSDictionaries。 每个词典都有一个BOOL值的键。

我需要对该数组进行排序,结果应该是2 NSArrays:一个是带有0值的字典,另一个带有带有1值的字典。

这样做的最佳方法是什么?

2 个答案:

答案 0 :(得分: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];
    }
}

其中array是初始数组,每个字典中的BOOL值存储在@"key"。 它还使用新的字典访问语法

答案 1 :(得分: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];