课堂笔记09
2015-08-03 11:14
323 查看
NSArray / NSMutableArray 可变数组和不可变数组
在 OC 中我们用 ‘NSArray’ 类和 ‘NSMutableArray’ 类来表示数组,其中 ‘NSArray’ 类是 ‘NSMutableArray’ 类的父类,在 OC 中,我们的数组是有序的 ‘对象’ 的集合。即我们的数组只能存储 ‘对象’ 。在 OC 中,我们的数组中元素类型不能是 ‘int’ , ‘float’,‘CGPoint’等类型。
NSArray
//1、初始化 // NSArray *array = [NSArray new]; NSArray *array0 = [[NSArray alloc] init]; //等效于 NSArray *array1 = [NSArray array]; //创建一个里面只有一个元素的不可变数组 NSArray *array2 = [NSArray arrayWithObject:@"haha"]; //创建一个里面有多个元素的不可变数组 NSArray *array3 = [NSArray arrayWithObjects:@"haha",@"hehe",@"xixi",@"enen", nil]; //新语法 NSArray *array4 = @[@"haha"]; NSArray *array5 = @[@"haha",@"hehe",@"xixi",@"enen"]; //从另一个数组中创建一个数组 NSArray *array6 = [NSArray arrayWithArray:array2]; //从本地文件中读取数组 NSArray *array7 = [NSArray arrayWithContentsOfFile:@""]; //从网络文件中读取数/Users/5002/Desktop/cyq/OC/OC_09/OC_09/main.m组 NSArray *array8 = [NSArray arrayWithContentsOfURL:[NSURL URLWithString:@""]];
数组的属性
//求数组中元素的个数 NSUInteger count = array5.count;
数组的操作
//访问数组中的元素 //访问array6中的第一个元素 NSString *st1 = [array5 objectAtIndex:0]; for(int i = 0 ;i < array5.count;i++){ NSLog(@"数组中第%d个元素为%@",i,[array5 objectAtIndex:i ]); } //新语法访问数组中的元素 NSString *st2 = array5[1];//适配系统 //NSNumber类的新语法 NSNumber *number1 = [NSNumber numberWithInt:5]; //等效与 NSNumber *number2 = @5; NSNumber *number3 = @YES;
通过数组中的元素找下标
NSUInteger index = [array5 indexOfObject:@"hehe"]; NSLog(@"index = %lu",(unsigned long) index); //判断数组中是否存在某个元素 BOOL flag = [array5 containsObject:@"hehe"];
//向不可变数组中增加一个元素,生成一个新的数组; NSArray *newarray1 = [array5 arrayByAddingObject:@"gaga"]; NSArray *newarray2 = [array5 arrayByAddingObjectsFromArray:array5];//在该数组上在加上一个数组,都是在末尾加。 NSString *string = [newarray1 componentsJoinedByString:@"^--^!!"]; NSLog(@"string = %@",string); NSArray *array9 = @[@"123",@"456",@"789",@"000"]; NSString *string1 =[array9 componentsJoinedByString:@"-"];//通过‘-’将数组连接起来 NSLog(@"%@",string1); NSArray *string2 = [string1 componentsSeparatedByString:@"-"]; string1 = [string2 componentsJoinedByString:@""]; NSLog(@"%@",string1);
可变数组 ‘NSMutableArray’ 为 ‘NSArray’ 的子类,即上述所使用API对于可变数组都是适用的
//初始化方法 //初始化一个空的数组 NSMutableArray *marray1 = [NSMutableArray array]; NSMutableArray *marray2 = [NSMutableArray arrayWithObject:@"1"]; NSMutableArray *marray3 = [NSMutableArray arrayWithObjects:@"1",@"2",@"3",@"4", nil]; NSMutableArray *marray4 = [NSMutableArray arrayWithArray:marray2]; //可变数组独有的初始化方法 NSMutableArray *marray5 = [NSMutableArray arrayWithCapacity:10]; NSMutableArray *marray6 = [NSMutableArray arrayWithContentsOfFile:@""]; NSMutableArray *marray7 = [NSMutableArray arrayWithContentsOfURL:[NSURL URLWithString:@""]];
//增加 //在数组的末尾增加一个元素 [marray3 addObject:@"5"]; //在数组的指定位置增加一个元素 [marray3 insertObject:@"6" atIndex:3];
//替换 //将数组指定位置上的元素替换成用户想要的元素 [marray3 replaceObjectAtIndex:2 withObject:@"sb"];
//交换 //将数组指定位置上的两个元素交换位置 [marray3 exchangeObjectAtIndex:1 withObjectAtIndex:4]; for (NSString *ele in marray3) {//数组的遍历 NSLog(@"ele = %@",ele); }
//删除 //删除指定元素 [marray3 removeObject:@"1"]; //删除指定位置上的元素 [marray3 removeObjectAtIndex:2]; //删除数组中所有元素 [marray3 removeAllObjects]; //删除数组中最后一个元素 [marray3 removeLastObject];
//遍历数组 /* <#type *object#> //要求统一,不统一的话用id */ for (NSString *ele in marray3) { NSLog(@"ele = %@",ele); }
相关文章推荐
- SOA服务分类
- 解决system调用返回ECHILD的问题
- 数据库导入导出命令
- 算法:给定多个数字,把多个数字任意组合,选出组合后最大的数
- 括号
- 锦上
- 黑马程序员——JAVA基础---反射
- uva 10763 Foreign Exchange(排序+二分查找)
- Eclipse注解模板设置详解
- Algorithms—160.Intersection of Two Linked Lists
- OSG更新遍历(updateTraversal)流程
- apt-get常用命令
- HDU 1285 确定比赛名次 (拓扑排序)
- HDU5335 Walk Out(dfs+递推)
- java;jsp;tomcat;mysql;hibernate;j2ee 编码中文乱码全面解决方案
- [LeetCode] Shortest Palindrome I
- Shell 学习20 - Shell 跳出循环
- Redis使用总结之与Memcached异同
- linux串口的设定
- 【学习笔记】HTML 5 拖放