2012-02-21 162 views
0
NSArray *arr = [NSArray arrayWithObjects:@"m", 
        @"f", 
        @"m", 
        @"f", 
        @"f", 
        nil]; 

如何将@"f"的所有值简单地放入它自己的数组中?使用键值收集运算符(不使用手动循环)?NSArray返回特定值

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

回答

2

您可以使用NSPredicate:

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

键 - 值集合运营商都建立了聚合操作(例如计数总和分钟最大),而不是过滤。使用这些操作员无法做到这一点,但您可以使用[NSArray indexesOfObjectsPassingTest:][NSArray objectsAtIndexes:](或只是[NSArray filteredArrayUsingPredicate:])来实现所需的结果。

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