iOS 中NSArray NSSet转换 过滤重复与排序操作
来源:互联网 发布:网络诈骗 游戏点卡 编辑:程序博客网 时间:2024/06/08 15:17
很久没写ios代码。最近和朋友聊天时候有强迫症,想强烈把代码给优化。
问题是这样的:现在数据是日期数组,想过滤掉重复的日期,怎么解决。
原始代码
这里想到更简洁点。用NSSet来搞定。
- NSArray *arr = @[@"12-11", @"12-11", @"12-11", @"12-12", @"12-13", @"12-14"];
- NSSet *set = [NSSet setWithArray:arr];
- NSLog(@"set%@\n", set);
- {(
- "12-11",
- "12-14",
- "12-13",
- "12-12"
- )}
朋友看了说不行,这样打印的结果是无序的,用户要看有序的结果。
查了一下NSSet的排序,发现有个
- @interface NSSet (NSSortDescriptorSorting)
- - (NSArray *)sortedArrayUsingDescriptors:(NSArray *)sortDescriptors NS_AVAILABLE(10_6, 4_0); // returns a new array by sorting the objects of the receiver
- @end
传递的参数是NSSortDescriptor数组。
因此修改后代码如下
- NSArray *arr = @[@"12-11", @"12-11", @"12-11", @"12-12", @"12-13", @"12-14"];
- NSSet *set = [NSSet setWithArray:arr];
- NSArray *sortDesc = @[[[NSSortDescriptor alloc] initWithKey:nil ascending:YES]];
- NSArray *sortSetArray = [set sortedArrayUsingDescriptors:sortDesc];
- NSLog(@"set%@\nsort set%@", set, sortSetArray);
打印出来结果
- {(
- "12-11",
- "12-14",
- "12-13",
- "12-12"
- )}
- sort set(
- "12-11",
- "12-12",
- "12-13",
- "12-14"
- )
发现NSSortDescriptor是专门用来排序的描述符。可以用来排序NSSet,NSDictionary,NSArray。测试一下数组的使用。代码如下
- NSArray *arr = @[@"12-11", @"12-11", @"12-11", @"12-12", @"12-13", @"12-14"];
- NSArray *sortDesc = @[[[NSSortDescriptor alloc] initWithKey:nil ascending:YES]];
- NSArray *sort1Array = [arr sortedArrayUsingDescriptors:sortDesc];
- NSLog(@"sort1 array: %@\n",sort1Array);
打印出来
- sort1 array: (
- "12-11",
- "12-11",
- "12-11",
- "12-12",
- "12-13",
- "12-14"
- )
想起来一直用NSArray的排序代码
- NSArray *arr = @[@"12-11", @"12-11", @"12-11", @"12-12", @"12-13", @"12-14"];
- NSArray *sort2Array = [arr sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
- return [obj1 localizedCompare:obj2];
- }];
- NSLog(@"sort2 array %@", sort2Array);
以上只是示例,具体NSSortDescriptor和array的高级用法,大家可以查文档,可以简化代码。
0 0
- iOS 中NSArray NSSet转换 过滤重复与排序操作
- iOS 中NSArray NSSet转换 过滤重复与排序操作
- NSSet 与 NSArray 区别,小技巧,set过滤重复的对象,可以用将数组中的对象遍历出来存到 set 中,就过滤了.
- IOS学习笔记之NSArray与NSSet
- ios中NSArray,NSSet,NSDictionary总结
- iOS中NSArray, NSSet, NSDictionary的使用
- NSMutableArray,NSArray与NSSet
- NSArray与NSSet
- NSSet、NSArray的日期排序
- IOS中数组的使用(NSArray, NSSet, NSDictionary)
- IOS 中数组、集合、字典的使用(NSArray, NSSet, NSDictionary)
- IOS中数组的使用(NSArray, NSSet, NSDictionary)
- IOS中数组的使用(NSArray, NSSet, NSDictionary)
- iOS中数组的使用(NSArray,NSSet,NSDictionary)
- NSArray,NSSet,NSDictionary 操作函数
- Objective-c中NSArray与NSSet的区别
- NSArray与NSSet的区别
- NSSet与NSArray的不同点
- 第10周项目4大奖赛计分
- 深入学习heritrix---体系结构(Overview of the crawler)
- Synergy-局域网内鼠标键盘共享-mac&window教程
- UVA10020(最小区间覆盖)
- 家务
- iOS 中NSArray NSSet转换 过滤重复与排序操作
- 华为编码比赛(笨笨熊搬家打包篇,打牌,扑克牌排序)
- UVA10382喷水装置
- 【Boost】boost::shared_from_this值得注意的地方
- Jquery 获取 radio、select 选中值
- mysql:ERROR 1820 (HY000): You must SET PASSWORD before executing this statement
- 5. 使用fork并发处理多个客户端的连接程序
- UVA10340子序列
- 要死的ASSERT(AfxGetThread() == NULL)问题--解决