- 这个是用来存储OC对象的数组,记住,只能存储OC对象,非OC对象编译就直接报错
- 这是1个类
- 特点:
- 存储多个数据
- 长度固定
- 只能存储OC对象
- 每1个元素都是有序的
- 创建字符串的时候,不要使用new array alloc等来创建,因为创建出来的数组长度是0,没有意义
最常用的创建NSArray数组的方法:
- arrayWithObjects
NSArray *arr = [NSArray arrayWithObjects:@"jack",@"rose",@"lilei", nil];
NSLog(@"%@",arr);
注意:
- 最后要写1个nil 代表结束
- 写在中间的nil,会认为元素到这里就结束
- -
取出数组元素的值
- NSArray数组名[下标];
- 如果下标越界,直接报错
- 调用方法:
- NSString *str = [arr objectAtIndex:0];
- NSArray数组的元素:
- 是id类型的,所以可以存储任意的OC对象
- 取出来的元素可以赋值给任意的指针变量
- 取出NSArray数组的元素不能使用点语法
- 可以在NSLog中使用%@将元素全部输出
- 取出元素的个数
NSArray *arr = [NSArray arrayWithObjects:@"jack",@"lili",@"rose", nil];
NSUInteger num = arr.count;
NSLog(@"%lu",num);
- 取出下标的元素的值
NSArray *arr = [NSArray arrayWithObjects:@"jack",@"lili",@"rose", nil];
NSLog(@"%@",[arr objectAtIndex:1]) ;
- 判断是否包含某个元素
NSArray *arr = [NSArray arrayWithObjects:@"jack",@"lili",@"rose", nil];
// NSLog(@"%@",[arr objectAtIndex:1]) ;
BOOL res = [arr containsObject:@"lili"];
if (res == YES)
{
NSLog(@"包含");
}else
{
NSLog(@"不包含");
}
- 取出首个元素
NSArray *arr = [NSArray arrayWithObjects:@"jack",@"lili",@"rose", nil];
NSString *str = arr.firstObject;
NSLog(@"%@",str);
- 取出最后的元素
NSArray *arr = [NSArray arrayWithObjects:@"jack",@"lili",@"rose", nil];
NSString *str =arr.lastObject;
NSLog(@"%@",str);
- 取出某个元素第一次出现的下标
NSArray *arr = [NSArray arrayWithObjects:@"jack",@"lili",@"jack",@"rose", nil];
NSUInteger num = [arr indexOfObject:@"jack"];
NSLog(@"%lu",num);
- 指定范围内元素出现的第一次的下标
NSArray *arr = [NSArray arrayWithObjects:@"jack",@"lili",@"jack",@"rose", nil];
NSUInteger num = [arr indexOfObject:@"jack" inRange:NSMakeRange(1,2)];
NSLog(@"%lu",num);
NSArray数组的简要初始化
NSArray *arr = @[@"jack",@"lilei",@"lili"];
不必在后面加nil
遍历
NSArray *arr = @[@"jack",@"lilei",@"lili"];
for (int i = 0 ; i<arr.count; i++)
{
NSLog(@"arr[%d] = %@",i,arr[i]);
}
这里使用for循环遍历
NSArray *arr = @[@"jack",@"lilei",@"lili"];
for(NSString *str in arr)
{
NSLog(@"%@",str);
}
使用for增强
使用block遍历NSArray数组
-
- (void)enumerateObjectsUsingBlock:(void (^)(id obj, NSUInteger idx, BOOL *stop))block
NSArray *arr = @[@"jack",@"lilei",@"lili"];
[arr enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
NSLog(@"arr[%lu] = %@",idx,obj);
if (idx == 1)
{
*stop = YES;
}
}];