OC - SortArray
2015-08-14 19:46
260 查看
<main.m>
<Person.h>
<Person.m>
#import <Foundation/Foundation.h> #import "Person.h" int main(int argc, const char * argv[]) { @autoreleasepool { //创建四个 Person 对象 Person *per1 = [[Person alloc ] initWithName:@"zhangSan" sex:@"male" age:@"25"]; Person *per2 = [[Person alloc] initWithName:@"liSi" sex:@"female" age:@"22"]; Person *per3 = [[Person alloc] initWithName:@"maHuaTeng" sex:@"male" age:@"38"]; Person *per4 = [[Person alloc] initWithName:@"maYun" sex:@"male" age:@"40"]; //放入数组 NSMutableArray *array = [NSMutableArray array]; //添加 [array addObject:per1]; [array addObject:per2]; [array addObject:per3]; [array addObject:per3]; [array addObject:per4]; // [@"a"compare:@"b"]; //按自己的需求为其排序(添加核实的方法) [array sortUsingSelector:@selector(compareByNameWithOther:)]; NSLog(@"%@",array); [array sortUsingSelector:@selector(compareByAgeWithOther:)]; NSLog(@"%@",array); } return 0; }
<Person.h>
#import <Foundation/Foundation.h> @interface Person : NSObject { NSString *_name; NSString *_sex; NSString *_age; } -(id)initWithName:(NSString *)name sex:(NSString *)sex age:(NSString *)age; -(void)setName:(NSString *)name; -(NSString * )name; -(void)setSex:(NSString *)sex; -(NSString *)sex; -(void)setAge:(NSString *)age; -(NSString *)age; //规定输出格式的方法 -(NSString *)description; //按姓名排序 -(NSComparisonResult)compareByNameWithOther:(Person *)anotherPerson; //按年龄排序 -(NSComparisonResult)compareByAgeWithOther:(Person *)anotherPerson; @end
<Person.m>
#import "Person.h" @implementation Person -(id)initWithName:(NSString *)name sex:(NSString *)sex age:(NSString *)age { if ([super init]) { _name = name; _sex = sex; _age = age; }return self; } -(void)setName:(NSString *)name { _name = name; } -(NSString * )name { return _name; } -(void)setSex:(NSString *)sex { _sex = sex; } -(NSString *)sex { return _sex; } -(void)setAge:(NSString *)age { _age = age; } -(NSString *)age { return _age; } -(NSString *)description { return [NSString stringWithFormat:@"name:%@,sex:%@,age:%@",_name,_sex,_age]; } //按姓名排序 -(NSComparisonResult)compareByNameWithOther:(Person *)anotherPerson { if ([self.name compare:anotherPerson.name] > 0 ) { //如果当前的名字大于传入的名字大于传入的名字,则返回降序 return NSOrderedDescending; }else if([self.name compare:anotherPerson.name] < 0){ //如果当前的名字小于传入的名字大于传入的名字,则返回升序 return NSOrderedAscending; } //如果都不满足,则是相等 return NSOrderedSame; } //按年龄排序 -(NSComparisonResult)compareByAgeWithOther:(Person *)anotherPerson { if ([self.age compare:anotherPerson.age] > 0) { return NSOrderedDescending; }else if ([self.age compare:anotherPerson.age] < 0){ return NSOrderedAscending; } return NSOrderedSame; } @end
相关文章推荐
- Objective-C:保留计数器思想的详解(对象的保留和所有权的释放)
- RedHat Enterprise Linux5关于中文显示乱码问题解决
- PLSQL操作Oracle创建用户和表
- HD1285 确定比赛名次 【拓扑排序】
- hdu 3986 Harry Potter and the Final Battle spfa变形
- 黑马程序员-多态的讲解
- UVa 439-Knight Moves
- 求两个串的最大公共子串
- 使用reserve要再次避免不必要的分配
- hdu 3986 Harry Potter and the Final Battle spfa变形
- ListView/gridView代码优化viewHolder精解--converView使用
- Nginx内存管理
- C# axWindowsMediaPlayer制作播放器
- POJ 2367 Genealogical tree(拓扑排序)
- 线程池(二)
- 摄像机标定方法(二)----Faugeras的摄像机标定方法
- poj 2367 Genealogical tree【拓扑排序输出可行解】
- 排版紧凑情况下IOS 浏览器的文字部分选中问题
- C语言-母牛和兔子的问题
- PPT自动载入图片并矩阵分布