我不知道这些价值观。我只知道钥匙。
arrTripCat :
(
{ tripcategory = "general_tourism"; },
{ tripcategory = nightlife; },
{ tripcategory = "art_museums"; },
{ tripcategory = nightlife; },
{ tripcategory = architecture; },
{ tripcategory = nightlife; }
);
我试过了NSPredicate
:
NSArray *arrTripCat = [NSArray arrayWithArray:[self.dictSearchResult objectForKey:@"TripCategories"]];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY SELF.@allKeys contains[cd] %@",@"tripcategory"];
NSMutableArray *filteredArray = [[NSMutableArray alloc] init];
[filteredArray addObjectsFromArray:[arrTripCat filteredArrayUsingPredicate:predicate]];
此后,filteredArray
仍然拥有与之前格式相同的所有数据。
filteredArray:
(
{ tripcategory = "general_tourism"; },
{ tripcategory = nightlife; },
{ tripcategory = "art_museums"; },
{ tripcategory = nightlife; },
{ tripcategory = architecture; },
{ tripcategory = nightlife; }
);
我想要获得的最终结果是将tripcategory
键的所有值放入数组中。即。
( general_tourism, nightlife, art_museums, architecture )
答案 0 :(得分:0)
您不需要谓词,因为您实际上并未进行过滤,您只需要:
NSArray *tripCategories = [arrTripCat valueForKey:@"tripcategory"];
答案 1 :(得分:0)
您不想过滤,您想要折叠结果,因此使用谓词并不能满足您的目的。在普通的Cocoa中,您可以这样做:
NSMutableArray *results = @[].mutableCopy;
for (NSDictionary *dict in arrTripCat) {
[results addObject:dict[@"tripcategory"];
}
这会给你(general_tourism,nightlife,art_museums,architecture)。