iOS阶段学习第15天笔记(NSArray与NSMutableArray 数组)
2015-07-05 15:32
706 查看
iOS学习(OC语言)知识点整理
一、OC中的数组
1)数组:也是一个对象,数组中存放的是对象的地址,可以存放任意类型对象的地址,只能是对象不能是具体的数值,数组是有序的,
可以存放重复的元素,数组也分为不可变数组和可变数组.
1、不可变数组NSArray:初始化之后不能修改数组的内容
2、可变数组NSMutableArray:可以随时修改数组的内容(增加元素、删除元素、修改元素)
二、NSArray数组的操作
1)NSArray数组的创建
1、创建方法一:使用实例方法创建数组对象 例如:
2、创建方法二:用类方法创建数组对象 例如:
3、创建方法三:直接快速创建数组 例如:
2)数组中可使用.count 获取数组中元素的个数, 例如: NSUInteger number= array1.count;
3)objectAtIndex 用于根据数组下标获取数组中的元素 例如:
1 NSString *str1=[array1 objectAtIndex:0]; //获取数组中的第一个元素
2 NSString *str2=array1[0];//使用类似C语言的方式取出下标对应的元素
4)firstObject 用于获取数组中的第一个元素 例如:
NSString *first=[array1 firstObject];
5)lastObject 用于获取数组中最后一个元素 例如:
NSString *last=[array1 lastObject];
6)indexOfObject 用于根据元素获取该元素在数组中的下标 例如:
NSUInteger index=[array1 indexOfObject:@"three"];// 结果为:2
7)containsObject 用于判断数组中是否存在某个元素 例如:
8)subarrayWithRange 获取数组某个范围的数据,可用于对数组数据分页操作
9)NSArray 数组遍历方法
1、循环遍历法:通过下标取每个元素 例如:
2、迭代器法:创建一个迭代器对象,遍历array1的元素 例如:
3、快速遍历法: 遍历时不能修改元素的内容 例如:
10) 直接输出打印一个数组是会自动调用数组中的元素的description方法,把所有的元素都显示出来 例如:
11)componentsJoinedByString 用于将数组中的各个元素用指定字符拼接成一个字符串 例如:
12)componentsSeparatedByString 用于将一个字符串以指定字符分割成一个数组 例如:
13)componentsSeparatedByCharactersInSet 用字符串中所有的字符创建一个字符集对象,根据字符集对象截取字符串 例如:
三、NSMutableArray 数组的操作
1)可变数组:父类是NSArray,NSMutableArray可以操作数组中的元素(增加、删除、修改)
2)initWithObjects 用于创建可变数组对象 例如:
NSMutableArray *array1=[[NSMutableArray alloc]initWithObjects:@"one",@"two", nil];
3)addObject 在数组最后添加一个对象 例如:
[array1 addObject:[NSNumber numberWithInt:100]];
4)insertObject … atIndex… 在数组的指定索引位置插入一个对象 例如:
[array1 insertObject:@"shanghai" atIndex:0];
5)removeObject 删除指定元素,如果有多个,全都被删除 ,例如:
[array1 removeObject:@"one"];
6)removeLastObject 用于删除最后一个元素 例如:
[array1 removeLastObject];
7)removeObjectAtIndex 用于删除数组中指定位置的元素 例如:
[array1 removeObjectAtIndex:2];
8)removeObject… inRange… 将指定范围内的元素删除(如果不指定,会将所有相同的都删除) 例如:
[array1 removeObject:@"two" inRange:NSMakeRange(0, 3)];
9)removeAllObjects 删除数组中所有的元素 例如:
[array1 removeAllObjects];
10)replaceObjectAtIndex… withObject… 将指定位置的元素用新的元素替换 例如:
[array1 replaceObjectAtIndex:0 withObject:@"hello"];
11)exchangeObjectAtIndex… withObjectAtIndex… 用于交换指定下标处的元素 例如:
[array1 exchangeObjectAtIndex:0 withObjectAtIndex:2];
12)setArray 重置数组中的内容 例如:
13)NSMutableArray 对类对象的排序操作。
实例代码:
一、OC中的数组
1)数组:也是一个对象,数组中存放的是对象的地址,可以存放任意类型对象的地址,只能是对象不能是具体的数值,数组是有序的,
可以存放重复的元素,数组也分为不可变数组和可变数组.
1、不可变数组NSArray:初始化之后不能修改数组的内容
2、可变数组NSMutableArray:可以随时修改数组的内容(增加元素、删除元素、修改元素)
二、NSArray数组的操作
1)NSArray数组的创建
1、创建方法一:使用实例方法创建数组对象 例如:
NSArray *array1=[[NSArray alloc]initWithObjects:@"one", [NSNumber numberWithInt:20],@"three",@"one",@"four", nil]; //用一个数组对象创建另一个数组对象 NSArray *array2=[[NSArray alloc]initWithArray:array1];
2、创建方法二:用类方法创建数组对象 例如:
NSArray *array3=[NSArray arrayWithObjects:@"one",@"two",@"three",@"four", nil];
3、创建方法三:直接快速创建数组 例如:
NSArray *array4=@[@"one",@"two",@"three",@"four"];
2)数组中可使用.count 获取数组中元素的个数, 例如: NSUInteger number= array1.count;
3)objectAtIndex 用于根据数组下标获取数组中的元素 例如:
1 NSString *str1=[array1 objectAtIndex:0]; //获取数组中的第一个元素
2 NSString *str2=array1[0];//使用类似C语言的方式取出下标对应的元素
4)firstObject 用于获取数组中的第一个元素 例如:
NSString *first=[array1 firstObject];
5)lastObject 用于获取数组中最后一个元素 例如:
NSString *last=[array1 lastObject];
6)indexOfObject 用于根据元素获取该元素在数组中的下标 例如:
NSUInteger index=[array1 indexOfObject:@"three"];// 结果为:2
7)containsObject 用于判断数组中是否存在某个元素 例如:
if([array1 containsObject:@"four"]){ NSLog(@"contains"); }
8)subarrayWithRange 获取数组某个范围的数据,可用于对数组数据分页操作
NSArray *numArray=@[@1,@2,@3,@5,@6]; NSRange range=NSMakeRange(1, 2);//第一个参数为取值起始位置;第二个参数为取值个数 NSArray *array=[numArray subarrayWithRange:range]; NSLog(@"%@",array);//结果:(2,3)
9)NSArray 数组遍历方法
1、循环遍历法:通过下标取每个元素 例如:
for(int i=0;i<array1.count;i++){ NSString *s=[array1 objectAtIndex:i]; NSLog(@"%@",s); }
2、迭代器法:创建一个迭代器对象,遍历array1的元素 例如:
NSEnumerator *enumerator=[array1 objectEnumerator]; id obj; //[enumerator nextObject]:迭代器自动指向下一个元素,如果没有元素,为nil while (obj=[enumerator nextObject]) { NSLog(@"%@",obj); }
3、快速遍历法: 遍历时不能修改元素的内容 例如:
//循环中会自动将数组中的每个元素赋给s for(id s in array1){ if([s isKindOfClass:[NSNumber class]])//取出数组中的数值类型的数据 NSLog(@"number ******%@",s); else if ([s isKindOfClass:[NSString class]]) //取出数组中字符串类型的数据 NSLog(@"nsstring******%@",s); }
10) 直接输出打印一个数组是会自动调用数组中的元素的description方法,把所有的元素都显示出来 例如:
1 NSLog(@"%@",array1);//注:中文内容会变乱码,需要循环遍历输出才行。
11)componentsJoinedByString 用于将数组中的各个元素用指定字符拼接成一个字符串 例如:
NSString *s=[array1 componentsJoinedByString:@","];//以逗号拼接各个元素
12)componentsSeparatedByString 用于将一个字符串以指定字符分割成一个数组 例如:
NSString *str=@"hello,nihao,shang,hai"; NSArray *array6=[str componentsSeparatedByString:@","];//以符号分割字符串
13)componentsSeparatedByCharactersInSet 用字符串中所有的字符创建一个字符集对象,根据字符集对象截取字符串 例如:
NSString *str7=@"hello,@nihao!shang,hai"; NSArray *array7=[str7 componentsSeparatedByCharactersInSet: [NSCharacterSet characterSetWithCharactersInString:@",@!"]]; NSLog(@"array7:%@",array7); // 注:根据字符集对象中的任意一个字符,将字符串拆分成各个子字符串,会出现@""的情况,需要自己手动处理, 例如: if (![str isEqualToString:@""]) { //执行代码 }
三、NSMutableArray 数组的操作
1)可变数组:父类是NSArray,NSMutableArray可以操作数组中的元素(增加、删除、修改)
2)initWithObjects 用于创建可变数组对象 例如:
NSMutableArray *array1=[[NSMutableArray alloc]initWithObjects:@"one",@"two", nil];
3)addObject 在数组最后添加一个对象 例如:
[array1 addObject:[NSNumber numberWithInt:100]];
4)insertObject … atIndex… 在数组的指定索引位置插入一个对象 例如:
[array1 insertObject:@"shanghai" atIndex:0];
5)removeObject 删除指定元素,如果有多个,全都被删除 ,例如:
[array1 removeObject:@"one"];
6)removeLastObject 用于删除最后一个元素 例如:
[array1 removeLastObject];
7)removeObjectAtIndex 用于删除数组中指定位置的元素 例如:
[array1 removeObjectAtIndex:2];
8)removeObject… inRange… 将指定范围内的元素删除(如果不指定,会将所有相同的都删除) 例如:
[array1 removeObject:@"two" inRange:NSMakeRange(0, 3)];
9)removeAllObjects 删除数组中所有的元素 例如:
[array1 removeAllObjects];
10)replaceObjectAtIndex… withObject… 将指定位置的元素用新的元素替换 例如:
[array1 replaceObjectAtIndex:0 withObject:@"hello"];
11)exchangeObjectAtIndex… withObjectAtIndex… 用于交换指定下标处的元素 例如:
[array1 exchangeObjectAtIndex:0 withObjectAtIndex:2];
12)setArray 重置数组中的内容 例如:
1 NSArray *subArray=@[@"ios",@"two",@"oc"]; 2 [array1 setArray:subArray];
13)NSMutableArray 对类对象的排序操作。
实例代码:
//数组根据指定元素排序的操作 NSMutableArray *array=[[NSMutableArray alloc]init]; Student *stu=[[Student alloc]init]; stu.name=@"KingKong"; stu.age=24; stu.no=@"A1088"; stu.score=99; [array addObject:stu]; //根据成绩正序排(ascending:NO 倒序排) NSSortDescriptor *sortDes = [NSSortDescriptor sortDescriptorWithKey:@"score" ascending:YES]; [array sortUsingDescriptors:[NSMutableArray arrayWithObject:sortDes]];
相关文章推荐
- iOS-地图标注(大头针)
- iOS应用开发之地图位置解析
- iOS开发问题日志
- ios项目(七)
- [iOS学习]iOS提升性能的小技巧
- iOS开发项目名称修改
- 让字符串中的某一个数字改变
- ios项目(六)
- iOS多线程编程之NSOperation
- iOS多线程编程之NSThread
- iOS ImageView 默认是不和用户交互的 所以要开启交互功能
- ios 获得当前最上面的窗口
- 关于iOS
- IOS基础之——类扩展(class extensions)
- IOS开发 使用地图 MapKit
- iOS 8 的 51 个炫酷功能汇总
- xcode6 ios launchimage
- 你真的懂iOS的autorelease吗?
- ios项目(五)
- IOS--实现滤镜效果的四种方式