苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

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

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

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

查看: 263|回复: 6

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

[复制链接]
发表于 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)
发表于 2018-12-4 12:07:49 | 显示全部楼层
跟c#的差不多,不过现在都是面向对象的编程,数组都没怎么用过了。
 楼主| 发表于 2018-12-4 12:13:45 | 显示全部楼层
发表于 2018-12-4 14:59:16 | 显示全部楼层
发表于 2018-12-4 15:04:32 | 显示全部楼层
发表于 2018-12-4 16:34:37 | 显示全部楼层
发表于 2018-12-5 11:56:25 | 显示全部楼层
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

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

GMT+8, 2019-5-27 03:23

© 2017-2018

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