苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

分布式系统框架(V1.3) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper万能框架(V2.3) HttpHelper官方出品,无敌框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V1.9) 最牛的爬虫类,没有爬不到只有想不到 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 83|回复: 6

[基础] Object-C 数组NSArry与可变数组NSMutableArray

[复制链接]
  • TA的每日心情
    奋斗
    昨天 09:37
  • 签到天数: 21 天

    [LV.4]偶尔看看III

    发表于 2018-12-4 12:00:47 | 显示全部楼层 |阅读模式
    本帖最后由 竹林风 于 2018-12-4 12:01 编辑

    在OC中,我们用 NSArray 类和 NSMutableArray 类来表示数组.其中, NSArray 类是 NSMutableArray 类的父类.OC中的数组是有序的对象的集合,即我们的数组只能存储对象.数组中元素类型不能是 int,float,CGPoint等类型.


    NSArray(不可变数组)

    1.初始化方法

    [Objective-C] 纯文本查看 复制代码
    //创建一个空不不可变的数组
        NSArray *ary1 = [[NSArray alloc] init];
        NSArray *ary2 = [NSArray array];
        //创建一个里面只有一个元素的不可变数组
        NSArray *ary3 = [NSArray arrayWithObject:@"abcdefg"];
        //创建一个里面有多个元素的不可变数组
        NSArray *ary4 = [NSArray arrayWithObjects:@"aa",@"bb",@"cc",@"dd",nil];
        //新语法
        NSArray *ary5 = @[@"abcdefg"];//与3等价
        NSArray *ary6 = @[@"aa",@"bb",@"cc",@"dd"];//与4等价
        NSArray *ary7 = [NSArray arrayWithArray:ary2];
        //从本地文件中读取数组
        NSArray *ary8 = [NSArray arrayWithContentsOfFile:@""];
        //从网络文件中读取数组
        NSArray *ary9 = [NSArray arrayWithContentsOfURL:[NSURL URLWithString:@""]];


    2.数组元素个数


    [Objective-C] 纯文本查看 复制代码
    NSUInteger count = ary6.count;


    3.访问数组元素


    [Objective-C] 纯文本查看 复制代码
    //访问ary6中的第一个元素
        NSString *str = [ary6 objectAtIndex:0];
        for (int i = 0; i < ary6.count; i++) {
            NSLog(@"数组中第%d个元素为:%@",i,[ary6 objectAtIndex:i]);
        }


    4.通过数组中的元素找对应的下标


    [Objective-C] 纯文本查看 复制代码
    NSUInteger index = [ary6 indexOfObject:@"aa"];
        NSLog(@"index = %lu",(unsigned long)index);


    5.判断数组中是否存在某上元素


    [Objective-C] 纯文本查看 复制代码
    BOOL flag = [ary6 containsObject:@"bb"];


    6.向不可变数组中增加一个元素,生成一个新的数组


    [Objective-C] 纯文本查看 复制代码
    NSArray *newAry = [ary6 arrayByAddingObject:@"ee"];
        NSArray *newAry1 = [ary6 arrayByAddingObjectsFromArray:ary6];
        NSString *string = [newAry componentsJoinedByString:@","];
        NSArray *array = @[@"123",@"456",@"789",@"000"];
        NSString *string1 = [array componentsJoinedByString:@"-"];
        NSLog(@"%@",string1);
    
        NSArray *array1 = [string1 componentsSeparatedByString:@"-"];
        NSLog(@"array = %@",array1);
    
        NSString *string2 = [array1 componentsJoinedByString:@""];
        NSLog(@"%@",string2);
    


    看结果:

    4E2BD9B73A052A8B2BD149BFA1AC74C6.png


    NSMutableArray(可变数组) `NSMutableArray` 为 `NSArray` 的子类.

    1.初始化方法

    [Objective-C] 纯文本查看 复制代码
    //初始化一个空的可变数组
        NSMutableArray *mArray1 = [NSMutableArray array];
        NSMutableArray *mArray2 = [NSMutableArray arrayWithObject:@"1"];
        NSMutableArray *mArray3 = [NSMutableArray arrayWithObjects:@"1",@"2",@"3",@"4", nil];
        NSMutableArray *mArray4 = [NSMutableArray arrayWithArray:mArray2];
        //可变数组独有的初始化方法
        NSMutableArray *mArray5 = [NSMutableArray arrayWithCapacity:10];
    
        NSMutableArray *mArray6 = [NSMutableArray arrayWithContentsOfFile:@""];
        NSMutableArray *mArray7 = [NSMutableArray arrayWithContentsOfURL:@""];
    


    2.增加元素


    [Objective-C] 纯文本查看 复制代码
    //在数组的末尾增加一个元素
        [mArray3 addObject:@"5"];
        //在数组的指定位置增加一个元素
        [mArray3 insertObject:@"yanshuxin" atIndex:3];


    3.元素替换


    [Objective-C] 纯文本查看 复制代码
    //将数组指定位置上的元素替换成用户想要的元素
        [mArray3 replaceObjectAtIndex:2 withObject:@"sb"];


    4.元素交换


    [Objective-C] 纯文本查看 复制代码
    [mArray3 exchangeObjectAtIndex:1 withObjectAtIndex:4];


    5.删除元素


    [Objective-C] 纯文本查看 复制代码
    //删除指定元素
        [mArray3 removeObject:@"1"];
        //删除指定位置上的元素
        [mArray3 removeObjectAtIndex:2];
        //删除数组中最后一个元素
        [mArray3 removeLastObject];
        //删除所有元素
        [mArray3 removeAllObjects];
    


    6.快速遍历


    [Objective-C] 纯文本查看 复制代码
     //for(类型 对象 in 集合)
        for (NSString *ele in mArray3) {
            NSLog(@"ele = %@",ele);
        }


    看效果:

    8E02DB57C2D65481E582A092EC26C02A.png

    就介绍到这里吧,这些基本都是项目开发中最常用的。

    附件: Test-NSArray.zip (153.47 KB, 下载次数: 0)
  • TA的每日心情
    开心
    昨天 09:05
  • 签到天数: 643 天

    [LV.9]以坛为家II

    发表于 2018-12-4 12:07:49 | 显示全部楼层
    跟c#的差不多,不过现在都是面向对象的编程,数组都没怎么用过了。
  • TA的每日心情
    奋斗
    昨天 09:37
  • 签到天数: 21 天

    [LV.4]偶尔看看III

     楼主| 发表于 2018-12-4 12:13:45 | 显示全部楼层
  • TA的每日心情
    开心
    昨天 09:03
  • 签到天数: 17 天

    [LV.4]偶尔看看III

    发表于 2018-12-4 14:59:16 | 显示全部楼层
  • TA的每日心情
    慵懒
    昨天 08:50
  • 签到天数: 19 天

    [LV.4]偶尔看看III

    发表于 2018-12-4 15:04:32 | 显示全部楼层
  • TA的每日心情
    开心
    昨天 12:22
  • 签到天数: 20 天

    [LV.4]偶尔看看III

    发表于 2018-12-4 16:34:37 | 显示全部楼层
  • TA的每日心情
    奋斗
    昨天 08:44
  • 签到天数: 199 天

    [LV.7]常住居民III

    发表于 2018-12-5 11:56:25 | 显示全部楼层
    您需要登录后才可以回帖 登录 | 马上注册

    本版积分规则

    QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备17001017号-1 )

    GMT+8, 2018-12-13 00:34

    © 2017-2018

    快速回复 返回顶部 返回列表