一、数组的简单介绍
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