2012-02-21 94 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]]; 
} 
}