ios基础教程之常见的数组使用方法
一、数组的简单介绍
1.数组是一个对象,是任意类型对象地址的集合,oc的数组可以存储不同类型的对象
2.oc的数组只能存储对象,不能存放 简单的数据类型(int, float, nsinteger…)除非通过一些手段把简单数据类型变成对象。在c语言中的数组可以保存任意类型的数据。
3.存储的内存是连续的
二、不可变数组
0.定义数组
//定义一个空数组 nsarray *array1 = [nsarray array] ; array1 = @[];//空数组 //通过指定对象创建数组 array1 = [[nsarray alloc]initwithobjects:@"123",@"hello",@"ya",@"yuan",@"zi", nil] ; //通过简单的方式创建数组 array1 = @[@"123",@"hello",@"ya",@"yuan",@"zi"] ;
1.数组的长度
nsinteger count = array1.count ; nslog(@"%ld",count) ;
2.判断当前的数组中是否包含对应的对象 containsobject
bool ishave = [array1 containsobject:@"123"] ; if (ishave) { nslog(@"存在") ; }else{ nslog(@"不存在") ; } /* [a iskindofclass:b],判断a类是否是b的子类或者本类。 [a ismemberofclass:b],判断a类是否是b类(不包括子类) */
3.得到数组中最后一个对象
nsstring *str = [array1 lastobject]; nslog(@"str=%@",str) ;
4.得到第一个对象
nsstring *str1 = [array1 firstobject]; nslog(@"str1=%@",str1) ;
5.取出数组的指定的对象 (下标要小于数组的count)
nsstring *str2 = [array1 objectatindex:3] ; nslog(@"str2=%@",str2) ;
6.得到指定元素在数组中的位置 如果元素不存在则打印-1值
int index = (int)[array1 indexofobject:@"yayuanzi"] ; int index1 = (int)[array1 indexofobject:@"ya"] ; nslog(@"index=%d,index=%d",index,index1) ;
7.数组的遍历–> 查找数组中的每一个元素
7.1 基本的for循环通过下标逐一查找
for (int i = 0; i < array1.count; i++) { nsstring *str3 = [array1 objectatindex:i] ; nslog(@"str3 = %@",str3) ; }
7.2 for in 快速遍历 注意:需要让数组中的元素的类型保持一致
for (nsstring *str4 in array1) { nslog(@"str4 = %@",str4) ; }
8.把数组中所有的元素转化为字符串
[array1 componentsjoinedbystring:@“两个元素之间添加的字符串”];
9.取出数组中的一部分元素
//只初始化一个索引 nsindexset *indexset = [nsindexset indexsetwithindex:2]; //下标为1,长度为2 nsrange range = nsmakerange(0, 3); //构造一个范围的索引 indexset = [nsindexset indexsetwithindexesinrange:range]; [array objectsatindexes:indexset];
10.把数组写入文件
[array1 writetofile:path atomically:yes];
11.从文件中读取数组
[nsarray arraywithcontentsoffile:path];
三、可变数组
当数据不确定数量或者动态变化的时候就需要使用到可变数组
0.创建空的可变数组
nsmutablearray *mutarray = [[nsmutablearray alloc]init] ; nsmutablearray *mutarray1 = [nsmutablearray array];
1.创建有对象的数组
1.初始化只能有一个对象
nsmutablearray arraywithobject:@"111"];
2.初始化只能有多个对象
2.1[nsmutablearray arraywithobjects:@"1111",@"222",@"333",@"4444", nil];
2.2[[nsmutablearray alloc] initwithobjects:<#(id), ...#>, nil];
2.添加对象 注意下面两种的区别
nsmutablearray *mutarray = [[nsmutablearray alloc]init] ; person *personname1 = [[person alloc]initwithname:@"wuhu"] ; person *personname2 = [[person alloc]initwithname:@"yayuanzi"] ; person *personname3 = [[person alloc]initwithname:@"company"] ; nsarray *arr = [nsarray arraywithobjects:personname2,personname3, nil] ; //1.添加对象 注意下面两种的区别 [mutarray addobject:personname1] ; nslog(@"mutarray = %@",mutarray) ; [mutarray addobject:arr] ; //将arr作为一个对象整体添加到数组上 nslog(@"mutarray = %@",mutarray) ; [mutarray addobjectsfromarray:arr] ; //将arr中的对象,一个一个的加到可变数组中 nslog(@"mutarray = %@",mutarray) ;
3.交换元素的位置根据下标
[mutarray exchangeobjectatindex:1 withobjectatindex:2] ;
4.删除元素
//4.1删除所有的元素 [mutarray removeallobjects] ; //4.2删除最后一个元素 [mutarray removelastobject] ; //4.3删除指定的元素 [mutarray removeobject:personname3] ; //4.4根据下标来删除 :注意元素内元素的个数下标问题会导致奔溃 [mutarray removeobjectatindex:2] ;
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。