IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> [Objective-C]NSArray与NSMutableArray详解 -> 正文阅读

[移动开发][Objective-C]NSArray与NSMutableArray详解

NSArray

NSArray的特点

 1.只能存储OC对象
 2.长度固定,一旦数组创建完成无法新增和删除元素
 3.每个元素都是紧密相连的,可通过下标访问
 4.元素是id类型的
 5.必须以nil结尾,表示有效元素到此结束

NSArray数组的使用

 1. 使用 %@ 可以打印NSArray数组中的所有内容
 2. NSArray无法存储基本数据类型,无法存储非OC对象
 3. 创建空数组没有意义  eg:NSArray *arr1 = [NSArray new];NSArray *arr2 = [[NSArray alloc] init];NSArray *arr3 = [NSArray array] ;

NSArray取出数组中的元素

 1.可以通过下标访问NSArray数组元素 越界就直接报错。     						NSArray *arr5=@[@"11",@"22",@"33"];
	            NSLog(@"%@",arr5[0]);
	            NSLog(@"%@",arr5[1]);
	            NSLog(@"%@",arr5[2]);
 2.调用NSArray数组对象的对象方法取出指定下标的元素
        NSArray *arr5=@[@"11",@"22",@"33"];
        NSString *str1 = [arr5 objectAtIndex:0];
        NSString *str2 = [arr5 objectAtIndex:1];
        NSString *str3 = [arr5 objectAtIndex:2];
 3.取出NSArray数组的首元素,除了使用下标,还可以用:arr.firstObject;
    区别:如果数组为空,arr[0]运行报错,但firstObject会取到nil;
 4.取NSArray数组中最后一个元素:arr.lastObject;

NSArray其他的常用方法

 1.得到NSArray数组中元素的个数:
        NSLog(@"arr.count = %lu",arr.count);
 2.判断NSArray中是否包含指定元素:
        BOOL res = [arr containsObject:@"11"];
        NSLog(@"%d",res);
 3.获取指定元素在NSArray数组中第一次出现的下标:
        NSUInteger idx=[arr indexOfObject:@"指定元素"];
        NSLog(@"index = %lu",idx);
    如果没有找到,返回NSUInteger的最大值:9223372036854775807

NSArray数组的遍历

1.for循环遍历:  for(;;){}
2.使用增强for循环:
     for(数据类型 变量名 in NSArray数组) {
        通过变量名获取NSArray数组中的每一个元素
    }
  eg:NSArray *arr=@[@"11",@"22",@"33"];
     for(NSString *str in arr)
     {
         NSLog(@"%@ ",str);
     }
    如果NSArray数组中的元素类型不一致,迭代变量建议使用id类型:
        for(id item in arr) {
            NSLog(@"%@ ",item);
        }
3.使用block遍历
    功能:将arr数组中的每一个元素遍历出来,然后执行程序猿传入<#code#>处的代码进行数据处理
            注意:1.通过obj获取NSArray数组中的每一个元素
                 2.idx---当前元素下标
                 3.将*stop赋值为YES,就可以停止循环

         [arr enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
             <#code#>
         }];
            

         eg: NSArray *arr = @[@"Saber",@"Archer",@"Luncer"];
             [arr enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
         NSLog(@"%@.length = %lu",obj,[obj length]);
         NSLog(@"idx = %lu",idx);
         if(idx==2) {
             *stop=YES;
         }
     }];

NSArray与字符串

1.将NSArray中的元素链接起来组成新的字符串:
    - (NSString *)componentsJoinedByString:(NSString *)separator
    参数:连接符
    eg: NSArray *arr = @[@"Saber",@"Archer",@"Luncer"];
        NSString *str = [arr componentsJoinedByString:@"--"];
        NSLog(@"%@ ",str);  //Saber--Archer--Luncer
2.将NSString以指定的分隔符分成一个数组,每一部分就是数组的一个元素
     NSString *str = @"1,2,3,4,5";
     NSArray *arr1 = [str componentsSeparatedByString:@","];
     NSLog(@"%@ ",arr1);// 1 2 3 4 5

NSArray的文件操作

	1.将定义好的NSarray数组以plist文件方式持久化存储
		- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile
	2.通过plist文件来创建NSArray数组
		+ (nullable NSArray<ObjectType> *)arrayWithContentsOfFile:(NSString *)path

NSMutableArray

NSMutableArray的特点

1.NSMutableArray仍是一个数组,是NSArray的子类,具备NSArray的特点
2.NSMutableArray数组的元素可以动态的新增和删除,其他的用法均与NSArray一致

NSMutableArray数组的创建

1.创建空数组,有意义,可以新增元素
     NSMutableArray *arr1 = [NSMutableArray new];
     NSMutableArray *arr2 = [[NSMutableArray alloc]init];
     NSMutableArray *arr3 = [NSMutableArray array];
2.创建非空数组
    NSMutableArray *arr4 = [NSMutableArray arrayWithObjects:@"Saber",@"Archer",@"Luncer",@"Caster",nil];
3.注意!!!
    这种创建方法是错误的:NSMutableArray *arr = @[@"1",@"2",@"3",@"4"];
    这种方法只能用于创建NSArray对象!

向NSMutableArray中新增元素

1.addObject方法:将传入的参数作为数组的元素添加进去
     NSMutableArray *arr1 = [NSMutableArray arrayWithObjects:@"Saber",@"Archer",@"Lancer",@"Caster",nil];
     [arr addObject:@"Tohsaka"];
     [arr addObject:@"Emiya"];
 
    注意:如果传入的参数是一个NSarray数组,则该数组仅作为1个元素新增到NSMutableArray中
    eg: NSMutableArray *arr1 = [NSMutableArrayarrayWithObjects:@"Saber",@"Archer",@"Lancer",@"Caster",nil]; //count = 4
        NSArray *nsarr = @[@"1",@"2",@"2"];
        [arr1 addObject:nsarr];
        NSLog(@"%lu",arr1.count); //count = 5
2.addObjectsFromArray方法:将另外一个数组中的每个元素逐个添加到可变数组中
	    NSMutableArray *arr1 = [NSMutableArrayarrayWithObjects:@"Saber",@"Archer",@"Lancer",@"Caster",nil]; //count = 4
	    NSArray *nsarr = @[@"1",@"2",@"2"];
	    [arr1 addObjectsFromArray:nsarr];
	    NSLog(@"%lu",arr1.count); //count = 7
3.向指定下标之前插入1个元素
  	    NSMutableArray *arr = [NSMutableArray arrayWithObjects:@"1",@"2",@"3",@"4",nil];    //1 2 3 4
    	[arr insertObject:@"0" atIndex:0];  //0 1 2 3 4
    	[arr insertObject:@"5" atIndex:5];  //0 1 2 3 4 5

删除MutableArray数组中的元素

	1.删除指定下标的元素
   		 [arr removeObjectAtIndex:0];    //删除下表为0处的元素     
    2.删除所有的值为指定值的元素
   		 [arr removeObject:@"Saber"];    //删除值为Saber的元素
    3.删除指定范围内的元素
   		 [arr1 removeObject:@"1" inRange:NSMakeRange(0, 2)];  //删除从下标0开始的2个长度范围内的值为“1”的元素
    4.删除最后一个元素
  		  [arr removeLastObject];
     5.删除所有元素
   		 [arr removeAllObjects];

NSMutableArray的文件操作

	1.将数组存进plist文件
		- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile
		eg: [mtarr writeToFile:@"/Users/heyuxuan/Desktop/mtarr.plist" atomically:NO];
	2.通过plist文件创建数组
		+ (nullable NSMutableArray<ObjectType> *)arrayWithContentsOfFile:(NSString *)path;
		eg: NSMutableArray *mtarr = [NSMutableArray arrayWithContentsOfFile:@"/Users/heyuxuan/Desktop/mtarr.plist"];
  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-03-03 16:26:11  更:2022-03-03 16:27:11 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 16:56:28-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码