NSArray返回特定值

时间:2012-02-21 21:48:33

标签: ios

NSArray *arr = [NSArray arrayWithObjects:@"m", 
                    @"f", 
                    @"m", 
                    @"f", 
                    @"f", 
                    nil];

如何将@"f"的所有值简单地放入其自己的数组中?使用键值集合运算符(不使用手动循环)?

例如,我认为它可能看起来像[arr valueForKeyPath:@"self==f"]。有什么建议吗?

3 个答案:

答案 0 :(得分:2)

您可以使用NSPredicate:

[arr filteredArrayUsingPredicate:
 [NSPredicate predicateWithFormat:@"self == %@", @"f"]];

答案 1 :(得分:1)

为集合运营构建键值集合运算符(例如计数总和 min max )而不是过滤。使用这些运算符无法做到这一点,但您可以使用[NSArray indexesOfObjectsPassingTest:][NSArray objectsAtIndexes:](或仅[NSArray filteredArrayUsingPredicate:])来获得所需的结果。

答案 2 :(得分:0)

This is your Array
NSArray *arr = [NSArray arrayWithObjects:@"m", @"f", @"m", @"f", @"f", nil];

in normal functionality is

NSArray *FinalArray = [NSArray alloc]init];
for(int i=0;i <[arr count];i++)
{
 if([arr objectAtIndex:i] isEqualAtString:@"f"])
{
  [FinalArray addObject:[arr objectAtIndex:i]];
}
}