本文共 2816 字,大约阅读时间需要 9 分钟。
在 iOS 开发中,数组是非常常用的数据结构。Object-C 中提供了两种主要的数组类:NSArray 和 NSMutableArray。本文将从基础到应用,详细介绍这两种数组的特性及其使用方法。
NSArray(不可变数组)NSArray 是一个静态数组,无法修改其内容,也无法添加或删除元素。其核心特性是 不可变性。以下是 NSArray 的常用使用方法:
创建空数组
NSArray *array = [NSArray alloc] init];NSArray *array = [NSArray new];NSArray *array = [NSArray array];创建包含单一元素的数组
NSArray *array = [NSArray arrayWithObject:@"12345”];
创建包含多个元素的数组
NSArray *array = [NSArray arrayWithObjects:@“123”,@“456”,@“789”,@“abc”,@“def”,nil];
简化写法
NSArray *array = @[@“12345”]; // 等价于 ②
从文件或 URL 中读取数组
NSArray *array = [NSArray arrayWithContentsOfFile:@“路径”]; NSArray *array = [NSArray arrayWithContentsOfURL:[NSURL URLWithString:@“URL”]];
NSUInteger count = array.count; // 或者:NSInteger count = [array count];
// 访问数组中的元素NSString *string = [array objectAtIndex:0]; // 遍历数组for (int i = 0; i < array.count; i++) { NSLog(@"数组第 %d 个元素:%@", i, [array objectAtIndex:i]);} // 添加元素(生成新数组)NSArray *newArray = [array arrayByAddingObject:@“ghi”]; // 添加多个元素NSArray *newArray = [array arrayByAddingObjectsFromArray:array]; // 将数组转换为字符串NSString *string = [newArray componentsJoinedByString:@”,”];
NSString *string = @“123+456+789”;NSArray *array = [string componentsSeparatedByString:@“+”]; // 反之,将数组拼接成字符串NSArray *array = @[@"1”, @"2”, @"4”, @"3”];NSString *string = [array componentsJoinedByString:@"/”];
NSMutableArray(可变数组)NSMutableArray 是 NSArray 的子类,具有 可变性,即可以对数组中的元素进行添加、删除、替换等操作。以下是 NSMutableArray 的常用使用方法:
创建空数组
NSMutableArray *mArray = [NSMutableArray new];NSMutableArray *mArray = [NSMutableArray array];创建包含多个元素的数组
NSMutableArray *mArray = [NSMutableArray arrayWithObjects:@“1”,@“2”,@“3”,@“4”,@“5”,nil];
从文件或 URL 中读取数组
NSMutableArray *mArray = [NSMutableArray arrayWithContentsOfFile:@“路径”]; NSMutableArray *mArray = [NSMutableArray arrayWithContentsOfURL:[NSURL URLWithString:@“URL”]];
指定容量
NSMutableArray *mArray = [NSMutableArray arrayWithCapacity:10];
在末尾添加元素
[mArray addObject:@“7”];
插入指定位置的元素
[mArray insertObject:@“def” atIndex:2];
替换指定位置的元素
[mArray replaceObjectAtIndex:3 withObject:@“adc”];
删除元素
[mArray removeObject:@“4”]; [mArray removeObjectAtIndex:5]; [mArray removeLastObject]; [mArray removeAllObjects];
for (NSString *object in mArray) { NSLog(@“%@”,object);} 指定容量创建数组
+(id)arrayWithCapacity:(NSInteger)size;
初始化数组
-(id)initWithCapacity:(NSInteger)size;
添加元素
-(void)addObject:(id)object;
插入元素
-(void)insertObject:(id)object atIndex:(NSInteger)aIndex;
替换元素
-(void)replaceObject:(id)object atIndex:(NSInteger)aIndex;
删除元素
-(void)removeObject:(id)object;
删除所有元素
-(void)removeAllObjects;
排序方法
-(void)sortUsingSelector:(SEL)selector;
NSArray 和 NSMutableArray 在 iOS 开发中的应用场景有明显区别。NSArray 因其不可变性,适用于数据不可变的场景;而 NSMutableArray 则适用于需要频繁修改数据的应用。选择使用哪种数组类型取决于具体需求。
转载地址:http://yslf.baihongyu.com/