0

我有一个 NSDictionary,其中包含大约 150 个锅炉制造商的密钥。每个键的值是 NSDictionary 的 NSArray。每个 NSDictionary 代表一个具有一些属性的锅炉:

NSDictionary boilerData =
{
     @"Alpha" = [{name: Boiler1, rating: 80}, {name:Boiler2, rating: 90}],
     @"Beta" = [{name: Boiler3, rating: 80}, {name:Boiler4, rating: 91}, {name:Boiler5, rating: 78}],
     ...
}

我希望能够进行过滤,以便获得所有评分为 80 的锅炉。我知道我需要一个 NSPredicate,但我不知道如何构建它?我发现的其他文章似乎都不符合这个要求。

4

1 回答 1

1
NSDictionary *boilerData =
@{
  @"Alpha" : @[@{@"name": @"Boiler1", @"rating": @80}, @{@"name": @"Boiler2", @"rating": @90}],
  @"Beta" : @[@{@"name": @"Boiler3", @"rating": @98}, @{@"name": @"Boiler4", @"rating": @80}, @{@"name": @"Boiler5", @"rating": @90}]
  };

NSMutableArray *filteredArray = [[NSMutableArray alloc] init];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"rating = 80"];
for (NSArray *array in [boilerData allValues]) {
    [filteredArray addObjectsFromArray:[array filteredArrayUsingPredicate:predicate]];
}
NSLog(@"all boilers with rating = 80 : %@", filteredArray);
于 2013-05-02T15:38:42.607 回答