排序总结
1.一般数组排序
//对数组进行排序
NSArray * array = 一般数组
NSArray *result = [array sortedArrayUsingComparator:^NSComparisonResult(id _Nonnull obj1, id _Nonnull obj2) {
if (条件) {
return [obj2 compare:obj1]; //降序
}
else{
return [obj1 compare:obj2]; //升序
}
}];
2.对象数组按照属性排序
(1)
如果是对象需要按照xxx属性来排序,就生成下面的descriptor
// 创建排序条件
NSSortDescriptor *descriptor1 = [NSSortDescriptor sortDescriptorWithKey:@"xxx" ascending:YES];
如果需要多个排序,比如先按xxx排序,再按yyy排序。那就创建两个descriptor
NSSortDescriptor *descriptor2 = [NSSortDescriptor sortDescriptorWithKey:@"yyy" ascending:YES];
//排序
objArray = [objArray sortedArrayUsingDescriptors:@[descriptor1,descriptor2]];
(2)
vc.m中
//属性为字符串时
NSArray *newobjArr = [objArr sortedArrayUsingSelector:@selector(MyCompare:)];
// 属性为数字时
// NSArray *newobjArr = [objArr sortedArrayUsingSelector:@selector(MyCompare2:)];
CustomOneModel.m中实现比较方法
#import "CustomOneModel.h"
@implementation CustomOneModel
//属性为字符串时
-(NSComparisonResult)MyCompare:(CustomOneModel *)obj
{
return [self.name compare:obj.name];
}
// 属性为数字时
- (NSComparisonResult)MyCompare2:(CustomOneModel *)obj {
if ( self.height > obj.height ) {
return NSOrderedDescending;
} else if (self.height < obj.height ) {
return NSOrderedAscending;
} else {
return NSOrderedSame;
}
}
//CustomOneModel.h中需要声明MyCompare ,否则会出现黄色警告
@end
浙公网安备 33010602011771号