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
下一篇: 搜索引擎的收录量不增加的原因分析