经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 移动开发 » iOS » 查看文章
ios基础教程之常见的数组使用方法
来源:jb51  时间:2019/1/28 9:17:27  对本文有异议

一、数组的简单介绍

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

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

3.存储的内存是连续的

二、不可变数组

0.定义数组

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

1.数组的长度

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

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

  1. BOOL isHave = [array1 containsObject:@"123"] ;
  2. if (isHave) {
  3. NSLog(@"存在") ;
  4. }else{
  5. NSLog(@"不存在") ;
  6. }
  7. /*
  8. [A isKindOfClass:B],判断A类是否是B的子类或者本类。
  9. [A isMemberOfClass:B],判断A类是否是B类(不包括子类)
  10. */

3.得到数组中最后一个对象

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

4.得到第一个对象

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

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

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

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

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

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

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

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

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

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

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

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

9.取出数组中的一部分元素

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

10.把数组写入文件

  1. [array1 writeToFile:path atomically:YES];

11.从文件中读取数组

  1. [NSArray arrayWithContentsOfFile:path];

三、可变数组

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

0.创建空的可变数组

  1. NSMutableArray *mutArray = [[NSMutableArray alloc]init] ;
  2. 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.添加对象 注意下面两种的区别

  1. NSMutableArray *mutArray = [[NSMutableArray alloc]init] ;
  2. Person *personName1 = [[Person alloc]initWithName:@"wuhu"] ;
  3. Person *personName2 = [[Person alloc]initWithName:@"yayuanzi"] ;
  4. Person *personName3 = [[Person alloc]initWithName:@"company"] ;
  5. NSArray *arr = [NSArray arrayWithObjects:personName2,personName3, nil] ;
  6. //1.添加对象 注意下面两种的区别
  7. [mutArray addObject:personName1] ;
  8. NSLog(@"mutArray = %@",mutArray) ;
  9. [mutArray addObject:arr] ; //将arr作为一个对象整体添加到数组上
  10. NSLog(@"mutArray = %@",mutArray) ;
  11. [mutArray addObjectsFromArray:arr] ; //将arr中的对象,一个一个的加到可变数组中
  12. NSLog(@"mutArray = %@",mutArray) ;

3.交换元素的位置根据下标

  1. [mutArray exchangeObjectAtIndex:1 withObjectAtIndex:2] ;

4.删除元素

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

总结

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

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号