Objective-C语法之NSSortDescriptor
2015-06-13 19:51
344 查看
main.m
Person.h
Person.m
结果:
#import <Foundation/Foundation.h> #import "Person.h" /** NSSortDescriptor 可以实现按照对象的属性进行排序;支持多个属性排序。比如我们有个Person对象,它有名字(name)和年龄(age)两个属性,我们需要按Person的age属性(降序)和name属性(升序)来输出Person对象数组信息 */ void testSortDescriptor() { NSMutableArray *mArrPerson = [[NSMutableArray alloc] initWithCapacity:5]; Person *p = [[Person alloc] initWithName:@"KK" age:23]; [mArrPerson addObject:p]; p = [[Person alloc] initWithName:@"Candy" age:22]; [mArrPerson addObject:p]; p = [[Person alloc] initWithName:@"Wiky" age:27]; [mArrPerson addObject:p]; p = [[Person alloc] initWithName:@"Stone" age:32]; [mArrPerson addObject:p]; p = [[Person alloc] initWithName:@"Tom" age:28]; [mArrPerson addObject:p]; p = [[Person alloc] initWithName:@"Sherlock" age:27]; [mArrPerson addObject:p]; p = [[Person alloc] initWithName:@"Alex" age:29]; [mArrPerson addObject:p]; p = [[Person alloc] initWithName:@"Keye" age:28]; [mArrPerson addObject:p]; NSLog(@"按Person的age属性(降序)和name属性(升序)"); NSSortDescriptor *sortByAge = [[NSSortDescriptor alloc] initWithKey:@"age" ascending:NO]; NSSortDescriptor *sortByName = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES]; [mArrPerson sortUsingDescriptors:@[sortByAge, sortByName]]; for (Person *p in mArrPerson) { NSLog(@"age=%ld, name=%@", p.age, p.name); } } int main(int argc, const char * argv[]) { @autoreleasepool { testSortDescriptor(); } return 0; }
Person.h
#import <Foundation/Foundation.h> @interface Person : NSObject @property (nonatomic, strong) NSString *name; @property (nonatomic, assign) NSInteger age; - (id)initWithName:(NSString *)name age:(NSInteger)age; @end
Person.m
#import "Person.h" @implementation Person - (id)initWithName:(NSString *)name age:(NSInteger)age { if (self = [super init]) { _name = name; _age = age; } return self; } @end
结果:
2015-03-28 12:27:13.240 OCNSSortDescriptor[1276:49262] 按Person的age属性(降序)和name属性(升序) 2015-03-28 12:27:13.241 OCNSSortDescriptor[1276:49262] age=32, name=Stone 2015-03-28 12:27:13.241 OCNSSortDescriptor[1276:49262] age=29, name=Alex 2015-03-28 12:27:13.241 OCNSSortDescriptor[1276:49262] age=28, name=Keye 2015-03-28 12:27:13.241 OCNSSortDescriptor[1276:49262] age=28, name=Tom 2015-03-28 12:27:13.242 OCNSSortDescriptor[1276:49262] age=27, name=Sherlock 2015-03-28 12:27:13.242 OCNSSortDescriptor[1276:49262] age=27, name=Wiky 2015-03-28 12:27:13.242 OCNSSortDescriptor[1276:49262] age=23, name=KK 2015-03-28 12:27:13.242 OCNSSortDescriptor[1276:49262] age=22, name=Candy
相关文章推荐
- Objective-C语法之NSPredicate的使用
- jsrender for object
- jsrender for array 和for object语法
- objective-c集合类
- 学习笔记(objective-c)-继承
- JavaScript Object 对象
- 当json中object嵌套,datagrid中如何显示数据
- Objective-C NSString字符串操作总结
- Flex 4.6 在mxml中创建复杂Object
- Objective_C学习笔记(2)类的使用学习概要
- Objective-C开发编码规范
- Object-C 编写高质量代码
- Objective-C 学习笔记之使用跨文件依赖关系
- 论文提要“Improving Object Detection with DCN via Bayesian Optimization and Structured Prediction”
- [Obj-C笔记] "self = [super init]"的解释与潜藏bug
- Swift:引入Object-c代码
- java.lang.Object 的 wait 和 notify方法,及关键字 synchronized的作用
- objective-c 中的关联介绍
- objective-c 中的关联介绍
- (译)Objective-C的动态特性