NSArray简介
2016-02-18 15:04
531 查看
数组是一个集合类,是有序的,可以根据编制的索引找到想要的结果。OC数组只能存储对象(如字符串、数组、字典等),不能存储基本数据类型(如int,float,char),也不能存储nil。分为不可变数组(NSArray)和不可变数组(NSMutableArray)。不可变数组一经创建就不能对其内容进行操作。本篇文章只介绍NSArray的一些简单用法。NSMutableArray继承自NSArray。
1、不可变数组的创建
1>初始化方法创建
2>用一个已有数组创建
3>最简单的方法
2、数组的遍历
打印结果:
3、数组元素的合并
打印结果:
4、数组的查找
1>indexOfObject: 从前往后查找到第一个相同的元素就返回它的下标
2>indexOfObject: inRange: 查找指定范围内的数组是否有相同的元素 并返回第一个下标
3>containsObject: 判断数组中是否包含此元素
4>firstObjectCommonWithArray: 查找两个数组中的第一个公共元素
打印结果:
5、数组排序
1、数组里是字符串
2、数组里是模型,可以按特定属性名对应的属性值排序
6、数组的KVC
打印结果:
1、不可变数组的创建
1>初始化方法创建
Person* person=[[Person alloc]initWithName:@"zhao"]; //自定义的类 NSArray* arr1=[[NSArray alloc]initWithObjects:@"1",@"2", @"3",person, nil]; //实例方法 注意nil不能少 NSArray *arr3=[NSArray arrayWithObjects:@"one",@"two",@"three",person, nil];//类方法
2>用一个已有数组创建
NSArray *arr2=[[NSArray alloc]initWithArray:arr1]; //实例方法 NSArray *arr4=[NSArray arrayWithArray:arr3]; //类方法
3>最简单的方法
NSArray *arr5=@[@"o1", @"o2", @"o3",@[@"xyz", @"123"]];
2、数组的遍历
NSArray *array=@[@"one", @"two",@"three"]; //得到数组的第一个元素 [array firstObject]; //得到数组的最后一个元素 [array lastObject]; NSUInteger len=array.count; //得到数组中元素的个数 //常用的一种遍历方法 for(NSUInteger i=0; i<len; i++) { NSLog(@"array[%lu]:%@", i, array[i]); } //快速遍历法 for(NSString* obj in array) { NSLog(@"元素:%@", obj); } //枚举器法 NSEnumerator * enumerator=[array objectEnumerator]; id obj; while(obj = [enumerator nextObject]) { NSLog(@"枚举器法元素:%@", obj); }
打印结果:
3、数组元素的合并
NSArray *arr=@[@"i", @"love", @"you"]; //componentsJoinedByString:将一个数组以特定字符合并在一起 返回一个不可变字符串 NSString *result =[array componentsJoinedByString:@" "]; //用空格合并 NSLog(@"合并后的结果:%@", result);
打印结果:
4、数组的查找
1>indexOfObject: 从前往后查找到第一个相同的元素就返回它的下标
NSArray *array=@[@"123",@"xx", @"abc",@"xx",@"tt",@"xx",@"yy"]; NSUInteger index=[array indexOfObject:@"xx"]; NSLog(@"xx的下标:%lu", index);
2>indexOfObject: inRange: 查找指定范围内的数组是否有相同的元素 并返回第一个下标
index=[array indexOfObject:@"xx" inRange:NSMakeRange(2, 4)]; NSLog(@"指定范围找xx的下标:%lu", index);
3>containsObject: 判断数组中是否包含此元素
BOOL result=[array containsObject:@"abc"]; if(result) NSLog(@"abc在数组中"); else NSLog(@"abc不在数组中");
4>firstObjectCommonWithArray: 查找两个数组中的第一个公共元素
NSArray *arr1=@[@"wer",@"abc"]; NSString* str=[array firstObjectCommonWithArray:arr1]; NSLog(@"%@", str);
打印结果:
5、数组排序
1、数组里是字符串
NSArray *arr = @[@"12", @"34", @"a12", @"#59", @"6756"]; // 升序 按ASCII值得顺序排列 NSArray *ascendSortArr = [arr sortedArrayUsingSelector:@selector(compare:)]; // 降序 NSArray *deSortArr = [ascendSortArr reverseObjectEnumerator].allObjects; NSLog(@"%@ %@", ascendSortArr, deSortArr);
2、数组里是模型,可以按特定属性名对应的属性值排序
// 第一个参数:模型中的属性名 第二个:升序或降序 NSSortDescriptor *descriptor = [NSSortDescriptor sortDescriptorWithKey:@"属性名" ascending:YES]; [dataArray sortUsingDescriptors:@[descriptor]];
6、数组的KVC
NSArray * array = @[@{@"name":@"hwc", @"count":@(10), @"url":@"blog.csdn.net/hello_hwc"}, @{@"name":@"baidu", @"count":@(20), @"url":@"www.baidu.com"}, @{@"name":@"google", @"count":@(22), @"url":@"www.google.com"}]; NSArray *nameArray = [array valueForKeyPath:@"name"]; NSNumber *sum = [array valueForKeyPath:@"@sum.count"]; NSNumber *max = [array valueForKeyPath:@"@max.count"]; NSNumber *min = [array valueForKeyPath:@"@min.count"]; NSLog(@"NameArray:%@",nameArray.description); NSLog(@"Sum:%@",sum.description); NSLog(@"max:%@",max.description); NSLog(@"min:%@",min.description);
打印结果:
NSArray不可变数组[1048:42991] NameArray:( hwc, baidu, google ) NSArray不可变数组[1048:42991] Sum:52 NSArray不可变数组[1048:42991] max:22 NSArray不可变数组[1048:42991] min:10
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- 讲解iOS开发中基本的定位功能实现
- js判断客户端是iOS还是Android等移动终端的方法
- iOS应用中UISearchDisplayController搜索效果的用法
- IOS开发环境windows化攻略
- 浅析iOS应用开发中线程间的通信与线程安全问题
- 检测iOS设备是否越狱的方法
- .net平台推送ios消息的实现方法
- 探讨Android与iOS,我们将何去何从?
- Android、iOS和Windows Phone中的推送技术详解
- iOS推送的那些事
- IOS 改变键盘颜色代码
- 举例详解iOS开发过程中的沙盒机制与文件
- Android和IOS的浏览器中检测是否安装某个客户端的方法