常用类-NSArray

注:NSArray一经创建就不可以更改,只能存储NSObject类子类的对象,不能直接存储C语言基本数据类型,也不能直接存储nil空类型的对象。(直接存储是指,不经过处理的存储)

创建数组

  • @[@”“, @”“];
    // 直接写出数组中的对象
    NSArray *boxes = @[ @"12", @"34", @"56" ];
  • +arrayWithObjects
    // 列出数组中的对象,使用nil结尾。这就是数组为什么不能直接存储nil
    NSArray *names = [NSArray arrayWithObjects:@"1", @"2" nil];

读取数组元素

  • count
    NSArray *names = [NSArray arrayWithObjects:@"1", @"2", nil];
    // 只读属性,数组内元素的个数
    NSLog(@"%lu", names.count);
  • 数组名[下标]
    NSArray *names = [NSArray arrayWithObjects:@"1", @"2", nil];
    // 可以用数组名[下标]的方式访问元素
    NSLog(@"%@", names[0]);
  • -containsObject
    NSArray *names = [NSArray arrayWithObjects:@"1", @"2", nil];
    // 判断给定对象是否在数组中
    BOOL result = [names containsObject: @"12"];
  • -objectAtIndex:
    NSArray *names = [NSArray arrayWithObjects:@"1", @"2", nil];
    // 获取指定索引下的对象
    NSLog(@"%@", [names objectAtIndex: 0]);

数组的遍历

  • 使用block
    NSArray *names = [NSArray arrayWithObjects:@"1", @"2", @"3", @"4", nil];
    // 使用块遍历数组
    [names enumerateObjectsUsingBlock:^(id obj, NSUInteger index, BOOL *stop){
        NSLog(@"%@", obj);
        // 根据索引,可以改变stop的值,从而控制是否继续遍历
        if (index == 2)
        {
            *stop = YES;
        }
    }];
  • NSEnumerator
    NSArray *names = [NSArray arrayWithObjects:@"1", @"2", @"3", @"4", nil];
    // 获取枚举接口,从而遍历数组
    NSEnumerator *e = [names objectEnumerator];
    id item;
    // 一直到下一个元素为nil
    while ((item = e.nextObject))
    {
        NSLog(@"%@", item);
    }
  • for in
    NSArray *names = @[ @"123", @"456" ];
    // 快速遍历
    for (id item in names)
    {
        NSLog(@"%@", item);
    }
  • for循环遍历
    NSArray *names = [NSArray arrayWithObjects:@"1", @"2", @"3", @"4", nil];

    for (int i = 0; i < names.count; ++i)
    {
        NSLog(@"%@", names[i]);
    }

数组的持久化与对象化

  • -writeToFile:atomically:
    NSArray *names = [NSArray arrayWithObjects:@"1", @"2", @"3", @"4", nil];
    // 存储路径
    NSString *path = @"/Users/hskj/arrays.plist";
    // 写入
    [names writeToFile: path atomically: YES];

使用文本编辑软件打开这个文件,看看它的真面目:
这里写图片描述
所以,若想从文件中生成一个数组,当然也有遵循这个格式.
- +arrayWithContentsOfFile:

    // 存储路径
    NSString *path = @"/Users/hskj/arrays.plist";
    // 把刚才的文件内容修改下,然后从文件中生成数组
    NSArray *names = [NSArray arrayWithContentsOfFile: path];
    // 遍历一下
    [names enumerateObjectsUsingBlock:^(id obj, NSUInteger index, BOOL *stop){
        NSLog(@"%@", obj);
    }];

输出的结果为
这里写图片描述

数组的排序

    NSArray *names = @[ @"1", @"4", @"0", @"10" ];
    // 排序后,生成新的数组,之前的数组是不可以变的
    NSArray *sortedNames = [names sortedArrayUsingSelector: @selector(compare:)];
    // 快速遍历
    for (id item in sortedNames)
    {
        NSLog(@"%@", item);
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值