如何从字典数组中提取指定键的取值数组?(以Appearance为例)
提取字典数组中指定键的所有值组成数组(Objective-C)
给定如下Objective-C字典数组:
NSArray *arrTemp = @[ @{@"Appearance" : @"Copper", @"Bitterness" : @(50), @"Style" : @"India Pale Ale (IPA)"}, @{@"Appearance" : @"Jet Black", @"Bitterness" : @(35), @"Style" : @"Stout"}, @{@"Appearance" : @"Copper", @"Bitterness" : @(25), @"Style" : @"English Brown Ale"}, @{@"Appearance" : @"Deep Gold", @"Bitterness" : @(25), @"Style" : @"Bock"} ];
要提取所有Appearance键对应的取值组成数组,有两种常用实现方式:
方法一:使用KVC(最简洁)
Objective-C的NSArray内置了valueForKey:方法,会自动遍历数组内的每个字典,调用字典的valueForKey:方法获取对应值,最终返回收集好的结果数组:
NSArray *appearances = [arrTemp valueForKey:@"Appearance"];
执行后,appearances数组内容为:@[@"Copper", @"Jet Black", @"Copper", @"Deep Gold"]。
注意:如果数组中存在不包含Appearance键的字典,对应位置会返回NSNull,可根据需求后续过滤这类值。
方法二:手动遍历(更灵活)
如果需要额外处理逻辑(比如过滤空值、转换值类型),可以手动循环遍历数组:
NSMutableArray *appearancesMutable = [NSMutableArray array]; for (NSDictionary *beerInfo in arrTemp) { NSString *appearance = beerInfo[@"Appearance"]; // 可选:过滤掉空值或NSNull if (appearance && ![appearance isEqual:[NSNull null]]) { [appearancesMutable addObject:appearance]; } } // 按需转成不可变数组 NSArray *appearances = [appearancesMutable copy];
这种方式支持自定义处理逻辑,比如跳过无效值,适合复杂业务场景。
内容的提问来源于stack exchange,提问作者Sivani Sangameswaran
相关产品推荐
相关产品推荐

