美文网首页
NSArray几种排序方式

NSArray几种排序方式

作者: 楼上那只猫 | 来源:发表于2017-01-22 21:42 被阅读97次

1.数组中存放字符串

NSArray * arr = @[@"bsdf", @"afe", @"c2", @"frtagrga", @"zss", @"wf", @"e"];
NSArray * sortArr = [arr sortedArrayUsingSelector:@selector(compare:)];   //默认升序

如果要降序,有下面2种方法
1

NSSortDescriptor * des = [NSSortDescriptorsortDescriptorWithKey:nil ascending:NO];  //YES为升序,NO为降序
NSArray * harr = [arr sortedArrayUsingDescriptors:@[des]];

2

NSArray * sortArr = [arr sortedArrayUsingComparator:^NSComparisonResult(id  _Nonnull obj1, id  _Nonnull obj2) {
     return [obj2 compare:obj1 options:NSCaseInsensitiveSearch];   //obj1在前为升序,obj2在前为降序
}];

2.如果数组中存储的是数字类型的字符串或者 NSNumber

NSArray * arr = @[@"2", @"1", @"34", @"54", @"5", @"66", @"90", @"12"];
NSArray * sortArr = [arr sortedArrayUsingComparator:^NSComparisonResult(id  _Nonnull obj1, id  _Nonnull obj2) {
        //改变返回值可以改变排序方式
        if ([obj1 integerValue] > [obj2 integerValue]) {
            return NSOrderedDescending; 
        } else if ([obj1 integerValue] < [obj2 integerValue]) {
            return NSOrderedAscending;
        } else {
            return NSOrderedSame;
        }
    }];

3.数组中存储的是对象类型,根据对象中的某个属性进行排序

Person * p1 = [[Person alloc] init];
p1.age = 22;
Person * p2 = [[Person alloc] init];
p2.age = 13;
Person * p3 = [[Person alloc] init];
p3.age = 6;
Person * p4 = [[Person alloc] init];
p4.age = 44;
NSArray * arr = @[p1, p2, p3, p4];
NSSortDescriptor * des = [[NSSortDescriptor alloc] initWithKey:@"age" ascending:NO];  //age是Person的一个属性,即按照age进行排序
NSLog(@"%@", [arr sortedArrayUsingDescriptors:@[des]]);

4.自定义方法排序(这个方法定义在要排序的对象中,如:Person类中)

- (NSComparisonResult)comparePerson:(Person *)p {
    if (self.age < p.age) {         //如果自身对象小于参数对象,返回升序,否则降序
        return NSOrderedAscending;
    } else {
        return NSOrderedDescending;
    }
}

相关文章

  • NSArray几种排序方式

    1.数组中存放字符串 如果要降序,有下面2种方法1 2 2.如果数组中存储的是数字类型的字符串或者 NSNumbe...

  • NSArray排序

    排序 数值排序NSArray *tempArr=[NSArray arrayWithObjects:@"1",@"...

  • iOS中的NSArray和NSMutableArray

    NSArray基本用法 NSArray遍历 NSArray中的所有对象执行方法 NSArray排序 NSArray...

  • iOS 数组排序

    简单的字符串等排序 方式一: NSArray *arr = @[@"Cecilia",@"Abbado",@"Ba...

  • 几种排序方式

    这篇文章主要记录几种排序方式,描述他们的排序过程,复杂度,代码实现,使用比较。 主要包括以下几种: 冒泡排序 插入...

  • 【Objective-C】数组排序方法讲解

    学习文章 NSArray排序方法讲解 “sortedArrayHint” method of NSArray cl...

  • iOS中的NSUserDefault、NSKeyedArchiv

    ios中常用的文件存取的几种方式: 1、直接写文件的方式,可以存储的对象有NSString、NSArray、NSD...

  • NSArray 排序

    [oneArray sortUsingComparator:^NSComparisonResult(id obj1...

  • NSArray排序

    方法一:在数组的对象里增加比较方法,例如Person类型的数组,想按生日来排序,那么首先在Person类里增加下面...

  • python中看pandas遇到的问题

    1.几种排序方式,sort_index、sort_value。2.几种取值方式,.ix、.index等等。3.ra...

网友评论

      本文标题:NSArray几种排序方式

      本文链接:https://www.haomeiwen.com/subject/snbobttx.html