排序总结

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

 

posted @ 2017-08-02 17:16  刚刚888  阅读(171)  评论(0编辑  收藏  举报