OC 学习笔记 - NSArray和NSMutableArray

NSArray

初始化

NSArray *array = [[NSArray alloc]initWithObjects:@"a",@"b",@"c",nil];
NSArray *array = [NSArray arrayWithObjects:@"a",@"b",@"c",nil];
NSArray *array = @[@"a",@"b",@"c"];

获取数组大小

NSArray *array = @[@"a",@"b",@"c"];
NSLog(@"%lu",array.count);

通过索引获取数组元素

NSArray *array = @[@"a",@"b",@"c"];
NSLog(@"%@",[array objectAtIndex:2]);

方法和属性

方法和属性 解释
count 获取数组中元素的个数
firstObject 获取数组中第一个元素
lastObject 获取数组中最后一个元素
+(instancetype)array 创建一个没有任何元素的数组
+(instancetype)arrayWithObject:(ObjectType)anObject 创建只有一个OC对象的数组
+(instancetype)arrayWithObjects:(ObjectType)firstObj, … 使用多个OC对象初始化数组
+(instancetype)arrayWithArray:(NSArray *)array 使用一个数组初始化另外一个数组
+(nullable NSArray *)arrayWithContentsOfFile:(NSString *)path 从文件中读取一个数组数据
+(nullable NSArray *)arrayWithContentsOfURL:(NSURL *)url 从URL路径中读取一个数组数据
-(instancetype)initWithObjects:(ObjectType)firstObj, …
-(instancetype)initWithArray:(NSArray *)array
-(instancetype)initWithArray:(NSArray *)array copyItems:(BOOL)flag
-(nullable NSArray *)initWithContentsOfFile:(NSString *)path
-(nullable NSArray *)initWithContentsOfURL:(NSURL *)url
-(ObjectType)objectAtIndex:(NSUInteger)index 获取数组中指定下标的元素的值
-(BOOL)containsObject:(ObjectType)anObject 判断数组中是否包含指定元素
-(BOOL)isEqualToArray:(NSArray *)otherArray 判断两个数组是否相同
-(void)makeObjectsPerformSelector:(SEL)aSelector 对数组中所有元素发送消息
-(void)makeObjectsPerformSelector:(SEL)aSelector withObject:(nullable id)argument 对数组中所有元素发送带参数的消息
-(NSUInteger)indexOfObject:(ObjectType)anObject 查找指定元素第一次出现的下标
-(NSUInteger)indexOfObject:(ObjectType)anObject inRange:(NSRange)range 在一定范围内查找指定元素

需要注意的是NSArray中以nil作为标志表示数组元素传递结束,当设置一个对象为nil,NSArray就会以此为标志结束存储,后面的对象就没有办法存在数组中了。
因此NSArray中不能存储nil,会将nil作为元素结束的标志,并且NSArray中只能存储OC对象,而nil等于0为基本数据类型。

NSMutableArray

初始化

NSMutableArray *array = [[NSMutableArray alloc]initWithCapacity:3];
NSMutableArray *array = [NSMutableArray arrayWithCapacity:3];

从数组末尾追加元素

NSMutableArray *array = [[NSMutableArray alloc]initWithCapacity:3];
[array addObject:@"2"];
[array addObject:@"1"];
[array addObject:@"3"];
NSLog(@"%@",array);

删除全部元素

NSMutableArray *array = [[NSMutableArray alloc]initWithCapacity:3];
[array addObject:@"2"];
[array addObject:@"1"];
[array addObject:@"3"];
[array removeAllObjects];
NSLog(@"%@",array);

删除最后一个元素

NSMutableArray *array = [[NSMutableArray alloc]initWithCapacity:3];
[array addObject:@"2"];
[array addObject:@"1"];
[array addObject:@"3"];
[array removeLastObject];
NSLog(@"%@",array);

通过索引删除数组元素

NSMutableArray *array = [[NSMutableArray alloc]initWithCapacity:3];
[array addObject:@"2"];
[array addObject:@"1"];
[array addObject:@"3"];
[array removeObjectAtIndex:2];
NSLog(@"%@",array);

删除特定数组元素

NSMutableArray *array = [[NSMutableArray alloc]initWithCapacity:3];
[array addObject:@"2"];
[array addObject:@"1"];
[array addObject:@"3"];
[array removeObject:@"1"];
NSLog(@"%@",array);

根据索引替换数组元素

NSMutableArray *array = [[NSMutableArray alloc]initWithCapacity:3];
[array addObject:@"2"];
[array addObject:@"1"];
[array addObject:@"3"];
[array replaceObjectAtIndex:1 withObject:@"2"];
NSLog(@"%@",array);

根据索引插入数组元素

NSMutableArray *array = [[NSMutableArray alloc]initWithCapacity:3];
[array addObject:@"2"];
[array addObject:@"1"];
[array addObject:@"3"];
[array insertObject:@"2" atIndex:1];
NSLog(@"%@",array);

数组遍历

枚举器遍历

NSMutableArray *array = [[NSMutableArray alloc]initWithCapacity:3];
[array addObject:@"2"];
[array addObject:@"1"];
[array addObject:@"3"];
    
NSEnumerator *enumerator = [array objectEnumerator];
id obj;
while (obj=[enumerator nextObject]){
	NSLog(@"%@",obj);
}

快速遍历

NSMutableArray *array = [[NSMutableArray alloc]initWithCapacity:3];
[array addObject:@"2"];
[array addObject:@"1"];
[array addObject:@"3"];
    
for(id obj in array){
	NSLog(@"%@",obj);
}
发布了38 篇原创文章 · 获赞 5 · 访问量 9074

猜你喜欢

转载自blog.csdn.net/zj382561388/article/details/81245543
今日推荐