欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

ios基础教程之常见的数组使用方法

程序员文章站 2023-11-22 11:00:46
一、数组的简单介绍 1.数组是一个对象,是任意类型对象地址的集合,oc的数组可以存储不同类型的对象 2.oc的数组只能存储对象,不能存放 简单的数据类型(int, fl...

一、数组的简单介绍

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] ;

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。