服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - IOS - ios基础教程之常见的数组使用方法

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

2021-05-20 16:46石, 稳 IOS

这篇文章主要给大家介绍了关于ios基础教程之常见的数组使用方法的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

一、数组的简单介绍

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

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

3.存储的内存是连续的

二、不可变数组

0.定义数组

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

1.数组的长度

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

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

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

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

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

4.得到第一个对象

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

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

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

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

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

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

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

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

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

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

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

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

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

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

10.把数组写入文件

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

11.从文件中读取数组

?
1
[NSArray arrayWithContentsOfFile:path];

三、可变数组

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

0.创建空的可变数组

?
1
2
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.添加对象 注意下面两种的区别

?
1
2
3
4
5
6
7
8
9
10
11
12
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.交换元素的位置根据下标

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

4.删除元素

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

总结

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

原文链接:https://blog.yayuanzi.com/25148.html

延伸 · 阅读

精彩推荐
  • IOSiOS布局渲染之UIView方法的调用时机详解

    iOS布局渲染之UIView方法的调用时机详解

    在你刚开始开发 iOS 应用时,最难避免或者是调试的就是和布局相关的问题,下面这篇文章主要给大家介绍了关于iOS布局渲染之UIView方法调用时机的相关资料...

    windtersharp7642021-05-04
  • IOSIOS 屏幕适配方案实现缩放window的示例代码

    IOS 屏幕适配方案实现缩放window的示例代码

    这篇文章主要介绍了IOS 屏幕适配方案实现缩放window的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要...

    xiari5772021-06-01
  • IOS解析iOS开发中的FirstResponder第一响应对象

    解析iOS开发中的FirstResponder第一响应对象

    这篇文章主要介绍了解析iOS开发中的FirstResponder第一响应对象,包括View的FirstResponder的释放问题,需要的朋友可以参考下...

    一片枫叶4662020-12-25
  • IOSiOS中tableview 两级cell的展开与收回的示例代码

    iOS中tableview 两级cell的展开与收回的示例代码

    本篇文章主要介绍了iOS中tableview 两级cell的展开与收回的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    J_Kang3862021-04-22
  • IOS关于iOS自适应cell行高的那些事儿

    关于iOS自适应cell行高的那些事儿

    这篇文章主要给大家介绍了关于iOS自适应cell行高的那些事儿,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的...

    daisy6092021-05-17
  • IOSIOS开发之字典转字符串的实例详解

    IOS开发之字典转字符串的实例详解

    这篇文章主要介绍了IOS开发之字典转字符串的实例详解的相关资料,希望通过本文能帮助到大家,让大家掌握这样的方法,需要的朋友可以参考下...

    苦练内功5832021-04-01
  • IOSiOS 雷达效果实例详解

    iOS 雷达效果实例详解

    这篇文章主要介绍了iOS 雷达效果实例详解的相关资料,需要的朋友可以参考下...

    SimpleWorld11022021-01-28
  • IOSiOS通过逆向理解Block的内存模型

    iOS通过逆向理解Block的内存模型

    自从对 iOS 的逆向初窥门径后,我也经常通过它来分析一些比较大的应用,参考一下这些应用中某些功能的实现。这个探索的过程乐趣多多,不仅能满足自...

    Swiftyper12832021-03-03