You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从字典数组中提取指定键的取值数组?(以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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 16:50:16