NSArray

来源:互联网 发布:ios武侠游戏知乎 编辑:程序博客网 时间:2024/06/01 12:35
  1. 这个是用来存储OC对象的数组,记住,只能存储OC对象,非OC对象编译就直接报错
  2. 这是1个类
  3. 特点:
    1. 存储多个数据
    2. 长度固定
    3. 只能存储OC对象
    4. 每1个元素都是有序的
  4. 创建字符串的时候,不要使用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;        }    }];

block遍历

0 0
原创粉丝点击