文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2022-05-18 15:55

关注

一、数组的简单介绍

数组是一个对象,是任意类型对象地址的集合,OC的数组可以存储不同类型的对象

OC的数组只能存储对象,不能存放 简单的数据类型(int, float, NSInteger…)除非通过一些手段把简单数据类型变成对象。在C语言中的数组可以保存任意类型的数据。

存储的内存是连续的

二、不可变数组

0.定义数组


//定义一个空数组
NSArray *array1 = [NSArray array] ;
array1 = @[];//空数组
//通过指定对象创建数组
array1 = [[NSArray alloc]initWithObjects:@"123",@"hello",@"ya",@"yuan",@"zi", nil] ;
//通过简单的方式创建数组
array1 = @[@"123",@"hello",@"ya",@"yuan",@"zi"] ;

数组的长度


NSInteger count = array1.count ;
NSLog(@"%ld",count) ;

判断当前的数组中是否包含对应的对象 containsObject


BOOL isHave = [array1 containsObject:@"123"] ;
if (isHave) {
  NSLog(@"存在") ;
 }else{
  NSLog(@"不存在") ;
  }
 
 

得到数组中最后一个对象


NSString *str = [array1 lastObject];
NSLog(@"str=%@",str) ;

得到第一个对象


NSString *str1 = [array1 firstObject];
NSLog(@"str1=%@",str1) ;

取出数组的指定的对象 (下标要小于数组的count)


NSString *str2 = [array1 objectAtIndex:3] ;
NSLog(@"str2=%@",str2) ;

得到指定元素在数组中的位置 如果元素不存在则打印-1值


int index = (int)[array1 indexOfObject:@"yayuanzi"] ;
int index1 = (int)[array1 indexOfObject:@"ya"] ;
NSLog(@"index=%d,index=%d",index,index1) ;

数组的遍历–> 查找数组中的每一个元素

1 基本的for循环通过下标逐一查找


for (int i = 0; i < array1.count; i++) {
 NSString *str3 = [array1 objectAtIndex:i] ;
 NSLog(@"str3 = %@",str3) ;
 }

2 for in 快速遍历 注意:需要让数组中的元素的类型保持一致


for (NSString *str4 in array1) {
   NSLog(@"str4 = %@",str4) ;
  }

把数组中所有的元素转化为字符串


[array1 componentsJoinedByString:@“两个元素之间添加的字符串”];

取出数组中的一部分元素


//只初始化一个索引
NSIndexSet *indexSet = [NSIndexSet indexSetWithIndex:2];
 
//下标为1,长度为2
NSRange range = NSMakeRange(0, 3);
 
//构造一个范围的索引
indexSet = [NSIndexSet indexSetWithIndexesInRange:range];
 
[array objectsAtIndexes:indexSet];

把数组写入文件


[array1 writeToFile:path atomically:YES];

从文件中读取数组


[NSArray arrayWithContentsOfFile:path];

三、可变数组

当数据不确定数量或者动态变化的时候就需要使用到可变数组

0.创建空的可变数组


NSMutableArray *mutArray = [[NSMutableArray alloc]init] ;
NSMutableArray *mutArray1 = [NSMutableArray array];

创建有对象的数组

初始化只能有一个对象 NSMutableArray arrayWithObject:@"111"]; 2.初始化只能有多个对象 2.1[NSMutableArray arrayWithObjects:@"1111",@"222",@"333",@"4444", nil]; 2.2[[NSMutableArray alloc] initWithObjects:<#(id), ...#>, nil];

添加对象 注意下面两种的区别


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

交换元素的位置根据下标


[mutArray exchangeObjectAtIndex:1 withObjectAtIndex:2] ;

删除元素


//4.1删除所有的元素
[mutArray removeAllObjects] ;
//4.2删除最后一个元素
[mutArray removeLastObject] ;
//4.3删除指定的元素
[mutArray removeObject:personName3] ;
//4.4根据下标来删除 :注意元素内元素的个数下标问题会导致奔溃
[mutArray removeObjectAtIndex:2] ;

总结

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

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-移动开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯