欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

iOS 模型排序之NSSortDescriptor

程序员文章站 2022-07-03 15:01:26
排序规则描述类: NSSortDescriptorNSSortDescriptor来指定排序规则, 对集合等进行排序时指定结果的排序规则;可以对一个类的某个属性(下文中方法中的key参数)指定排序规则;可以对一个字符串集合进行指定排序规则,把参数key赋值为nil就行。NSSet、NSArray、NSOrderedSet、NSMutableArray、NSMutableOrderedSet均有相应方法使用,参数都是包含NSSortDescriptor的数组, 意味着我们可以同时指定多条规....

排序规则描述类: NSSortDescriptor

 

  • NSSortDescriptor来指定排序规则, 对集合等进行排序时指定结果的排序规则;
  • 可以对一个类的某个属性(下文中方法中的key参数)指定排序规则;
  • 可以对一个字符串集合进行指定排序规则,把参数key赋值为nil就行。

NSSet、NSArray、NSOrderedSet、NSMutableArray、NSMutableOrderedSet均有相应方法使用,参数都是包含NSSortDescriptor的数组, 意味着我们可以同时指定多条规则来进行排序;(其优先级取决于在数组中的先后顺序)。

两个类方法初始化:

+ (instancetype)sortDescriptorWithKey:(nullable NSString *)key ascending:(BOOL)ascending API_AVAILABLE(macos(10.6), ios(4.0), watchos(2.0), tvos(9.0));
+ (instancetype)sortDescriptorWithKey:(nullable NSString *)key ascending:(BOOL)ascending selector:(nullable SEL)selector API_AVAILABLE(macos(10.6), ios(4.0), watchos(2.0), tvos(9.0));

参数解析:

key : 排序key, 某个对象的属性名称
ascending : 是否升序, YES-升序, NO-降序
selector : SEL选择器,自定义排序规则, 如果需要自己定义排序规则, 可传递此方法 (自定义方法的返回值为NSComparisonResult).

 

单个字段排序示例:

// 排序key, 某个对象的属性名称,是否升序, YES-升序, NO-降序
    NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES];
    // 排序结果
    NSArray *resultArr = [self.detailModel.areas sortedArrayUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]];

其中@"name"即为模型里需要作为排序的字段,resultArr即为排序之后的结果。

多个字段排序示例:

    // 排序key, 某个对象的属性名称,是否升序, YES-升序, NO-降序
    NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES];
    NSSortDescriptor *sortDescriptor1 = [NSSortDescriptor sortDescriptorWithKey:@"num" ascending:NO];
    // 排序结果
    self.resultArr = [self.detailModel.areas sortedArrayUsingDescriptors:[NSArray arrayWithObjects:sortDescriptor, sortDescriptor1, nil]];

 

待比较的属性是字符串(NSString)类型,也可以用带SEL的方法初始化。

 //创建排序规则NSSortDescriptor
    //key :按照name属性 升序排序 SEL选择器使用其默认的方法: localizedStandardCompare:
    NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES selector:@selector(localizedStandardCompare:)];
    //给数组添加排序规则
    NSArray *resultArr = [self.detailModel.areas sortedArrayUsingDescriptors:@[sort]];

 

 

 

 

本文地址:https://blog.csdn.net/bitcser/article/details/109612492