MST

星途 面试题库

面试题:Objective-C语法风格下复杂数据结构的操作规范

假设你需要在Objective-C中处理一个由多个字典组成的数组,字典中包含不同类型的数据。请按照代码规范,编写一个方法来遍历这个数组,提取出所有字典中特定键(例如 'name')对应的值,并确保代码的语法风格符合《Objective-C代码规范:命名约定与语法风格指南 》,同时说明为什么要这样编写。
18.4万 热度难度
编程语言Objective-C

知识考点

AI 面试

面试题答案

一键面试
#import <Foundation/Foundation.h>

NSArray<NSString *> *extractValuesForKey(NSArray<NSDictionary *> *array, NSString *key) {
    NSMutableArray<NSString *> *resultArray = [NSMutableArray array];
    for (NSDictionary *dict in array) {
        id value = dict[key];
        if ([value isKindOfClass:[NSString class]]) {
            [resultArray addObject:value];
        }
    }
    return resultArray;
}

为什么这样编写

  1. 函数命名:函数名 extractValuesForKey 清晰地表达了该函数的功能是提取特定键对应的值,符合命名约定中函数名应表意明确的要求。
  2. 参数命名array 代表包含字典的数组,key 代表要提取值的键,命名简洁且表意清晰。
  3. 变量命名resultArray 表示存储结果的数组,value 表示从字典中获取的值,符合命名清晰的规范。
  4. 类型标注:在Objective-C 2.0引入泛型后,使用 NSArray<NSString *> 明确表示数组中元素的类型,使用 NSArray<NSDictionary *> 明确表示传入数组中元素是字典类型,使代码可读性更强,也有助于编译器进行类型检查。
  5. 遍历数组:使用 for - in 循环简洁地遍历数组,这是Objective-C中常用的遍历集合的方式。
  6. 类型检查:在添加值到结果数组之前,使用 [value isKindOfClass:[NSString class]] 检查值的类型,确保添加到数组中的元素都是 NSString 类型,这保证了代码的健壮性。