iOS开发中的NSArray概述 | AI生成和翻译

Home 2025.10

什么是 NSArray?

NSArray 是苹果 Foundation 框架中的一个类,属于 iOS SDK(以及 macOS 等)的一部分。它表示一个不可变的、有序的对象集合,类似于其他语言中的数组。这意味着一旦创建了 NSArray,你就无法添加、删除或替换元素——只能从中读取数据。在 Objective-C 的 iOS 应用开发中,它通常用于存储和管理数据列表,比如用户偏好设置、数据库查询结果或 UI 元素。

主要特性:

在 Swift 中,NSArray 会被桥接到 Array,但如果你在使用 Objective-C(常见于遗留的 iOS 代码),你会直接使用 NSArray

如何在 iOS 中使用 NSArray

在 iOS 项目中使用 NSArray

  1. 导入 Foundation 框架(通常在 iOS 应用中默认已包含)。
    #import <Foundation/Foundation.h>
    
  2. 创建 NSArray
    • 字面量语法(iOS 6+):@[对象1, 对象2, ...]
    • 初始化方法:[[NSArray alloc] initWithObjects:对象1, 对象2, nil]
    • 从 C 数组创建:initWithArray:copyItems:

    示例:

    NSArray *fruits = @[@"apple", @"banana", @"cherry"];
    // 或者:
    NSArray *numbers = [[NSArray alloc] initWithObjects:@1, @2, @3, nil];
    
  3. 访问元素
    • objectAtIndex: 用于获取项。
    • count 用于获取长度。
    • firstObject / lastObject 用于获取首尾元素。
    • containsObject: 用于检查是否存在。

    示例:

    NSString *firstFruit = [fruits objectAtIndex:0]; // "apple"
    NSUInteger count = [fruits count]; // 3
    BOOL hasOrange = [fruits containsObject:@"orange"]; // NO
    
  4. 遍历
    • 快速枚举:for (id obj in array) { ... }
    • enumerateObjectsUsingBlock: 用于基于块的遍历(iOS 4+)。

    示例:

    for (NSString *fruit in fruits) {
        NSLog(@"Fruit: %@", fruit);
    }
    
  5. 常见操作
    • 排序:sortedArrayUsingSelector:sortedArrayUsingComparator:
    • 过滤:filteredArrayUsingPredicate:(与 NSPredicate 配合使用)。
    • 连接:componentsJoinedByString: 用于字符串。
    • 写入文件:writeToFile:atomically:

    示例(过滤):

    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"length > 5"];
    NSArray *longFruits = [fruits filteredArrayUsingPredicate:predicate];
    // 结果:@[@"banana", @"cherry"]
    
  6. 在 iOS 上下文中
    • 表格视图:将 NSArray 传递给 UITableView 的数据源方法,如 tableView:numberOfRowsInSection:(通过 count)和 tableView:cellForRowAtIndexPath:(通过 objectAtIndex:)。
    • 用户默认设置:使用 NSUserDefaults 存储/检索:[defaults setObject:array forKey:@"savedItems"];
    • JSON 处理:使用 JSONObjectWithData:options:error:NSData 相互转换。

对于可变需求(例如动态添加项),切换到 NSMutableArray

NSMutableArray *mutableFruits = [NSMutableArray arrayWithArray:fruits];
[mutableFruits addObject:@"date"];

提示

NSArray 文档
NSMutableArray 文档


Back

x-ai/grok-4-fast

Donate