<span style="font-size:24px;">{
NSString *_name;//性别
NSInteger _age;//年龄
CGFloat _height;//身高
}
//setter name
- (void)setName:(NSString *)name;
//getter
- (NSString *)name;
//setter age
- (void)setAge:(NSInteger)age;
//getter
-(NSInteger)age;
//setter age
- (void)setHeight:(NSInteger)height;
//getter
-(NSInteger)height;
//desciption
-(NSString *)description;
//customize init method
- (id)initWithName:(NSString *)name age:(NSInteger)age height:(CGFloat)height;
//compare
//age
- (NSComparisonResult)compareByAge:(Person *)anPerson;
//height
- (NSComparisonResult)compareByHeight:(Person *)anPerson;
//name
- (NSComparisonResult)compareByName:(Person *)anPerson;
//按姓名降序
- (NSComparisonResult)compareByNameDecending:(Person *)anPerson;
#import "Person.h"
@implementation Person
#pragma mark - setter and getter
//setter name
- (void)setName:(NSString *)name
{
_name = name;
}
//getter
- (NSString *)name
{
return _name;
}
//setter age
- (void)setAge:(NSInteger)age
{
_age = age;
}
//getter
-(NSInteger)age
{
return _age;
}
//setter age
- (void)setHeight:(NSInteger)height
{
_height = height;
}
//getter
-(NSInteger)height
{
return _height;
}
//对方法就行分类
#pragma mark - override method
//desciption
-(NSString *)description
{
return [NSString stringWithFormat:@"name:%@,age:%ld,height:%g", _name, (long)_age, _height];
}
#pragma mark - init method
//customize init method
- (id)initWithName:(NSString *)name age:(NSInteger)age height:(CGFloat)height
{
self = [super init];
if (self) {
_name = name;
_age = age;
_height = height;
}
return self;
}
#pragma mark - compare
//compare
//age
- (NSComparisonResult)compareByAge:(Person *)anPerson
{
if ([self age] > [anPerson age]) {
return NSOrderedDescending;//1
} else if ([self age] == [anPerson age]){
return NSOrderedSame;//0
} else {
return NSOrderedAscending;//-1
}
}
//height
- (NSComparisonResult)compareByHeight:(Person *)anPerson
{
if ([self height] > [anPerson height]) {
return NSOrderedDescending;//1
} else if ([self height] == [anPerson height]){
return NSOrderedSame;//0
} else {
return NSOrderedAscending;//-1
}
}
//name
- (NSComparisonResult)compareByName:(Person *)anPerson
{
return [[self name] compare: [anPerson name]];
}
//按姓名降序
- (NSComparisonResult)compareByNameDecending:(Person *)anPerson
{
return -[[self name] compare: [anPerson name]];//不加负号为升序排序,加负号为降序排序
}
@end
int main(int argc, const char * argv[])
{
@autoreleasepool {
Person *cui = [[Person alloc] initWithName:@"cui" age:19 height:175];
Person *wang = [[Person alloc] initWithName:@"wang" age:12 height:12];
Person *zhang = [[Person alloc] initWithName:@"zhang" age:13 height:67];
Person *heng = [[Person alloc] initWithName:@"heng" age:56 height:120];
Person *cong = [[Person alloc] initWithName:@"cong" age:11 height:111];
NSArray *arr = [[NSArray alloc] initWithObjects:cui, wang, zhang, heng, cong, nil];
NSLog(@"按年龄排序为");
//对数组中的对象按年龄升序排序
NSArray *arrSortByAge = [arr sortedArrayUsingSelector:@selector(compareByAge:)];
NSLog(@"%@", arrSortByAge);
//对数组中的对象按姓名升序排序
NSLog(@"按姓名排序为");
NSArray * arrSortByName = [arr sortedArrayUsingSelector:@selector(compareByName:)];
NSLog(@"%@", arrSortByName);
//对数组中的对象按身高升序排序
NSLog(@"按身高排序为");
NSArray * arrSortByHeight = [arr sortedArrayUsingSelector:@selector(compareByHeight:)];
NSLog(@"%@", arrSortByHeight);
按姓名降序
NSLog(@"按姓名降序排序为:");
NSArray *arrSortByNameDecending =[arr sortedArrayUsingSelector:@selector(compareByNameDecending:)];
NSLog(@"%@", arrSortByNameDecending);
NSArray *arr = [[NSArray alloc] initWithObjects:@"cc", @"bb", @"ee", @"dd", @"aa", nil];
//1.对数组进行升序排序
//sortedArrayUsingSelector:排序方法,使用场景,适用于升序排序以及自定义的类排序
NSArray *arrAscending = [arr sortedArrayUsingSelector:@selector(compare:)];//默认为升序排序
NSLog(@"%@", arrAscending);
//2.对数组进行降序排序 block
//block的排序方法,使用场景,适用于当数组中的对象类型是系统类型时,并且要降序排序时。
NSArray *arrDecending = [arr sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
//对block匿名函数实现,比较方法
//1.将id类型转为NSString *;
NSString *str1 = (NSString *)obj1;//(强制类型转换,只是等号右边的),等号左边的是用来接收转换后的
NSString *str2 = (NSString *)obj2;
//字符串比较
return -[str1 compare:str2];
}];
NSLog(@"%@",arrDecending);
}
return 0;
}</span>
OC中按姓名,年龄,身高升序,降序排序
最新推荐文章于 2022-09-25 16:00:24 发布