一个装了model的数组通过model 的属性排序

  • 在项目中有很多地方需要排序。
    今天在项目中遇到一个后台返回乱序的数据,但是移动端需要升序或降序排列。当然我首先想到的是冒泡排序,但是后面看了一个。其实还有种很简单的方法。code如下。

首先我们建立model

// .h文件中
@interface SortModel : NSObject

@property(nonatomic,strong) NSString *nameStr;
@property(nonatomic,strong) NSString *ageStr;
@property(nonatomic,assign) NSInteger age;

- (instancetype)initWithNameStr:(NSString *)nameStr ageStr:(NSString *)ageStr age:(NSInteger)age;
@end

// .m文件中
@implementation SortModel

- (instancetype)initWithNameStr:(NSString *)nameStr ageStr:(NSString *)ageStr age:(NSInteger)age{
    self = [super init];
    if (self){
        _nameStr = nameStr;
        _ageStr = ageStr;
        _age = age;
    }
    return self;
}
- (NSString *)description
{
    return [NSString stringWithFormat:@"model name is %@,model agestr is %@,model age is %ld", _nameStr,_ageStr,_age];
}
@end

然后我们来创建一个这个model 的数组

    SortModel *student1 = [[SortModel alloc] initWithNameStr:@"李涛" ageStr:@"26" age:24];
    SortModel *student2 = [[SortModel alloc] initWithNameStr:@"李涛1" ageStr:@"25" age:25];
    SortModel *student3 = [[SortModel alloc] initWithNameStr:@"李涛2" ageStr:@"24" age:26];
    NSArray *arr = @[student1,student2,student3];

最后我们来看看通过属性来排序吧

// ascending -> YES 为升序,NO为降序
NSSortDescriptor *sortDesc = [NSSortDescriptor sortDescriptorWithKey:@"_nameStr" ascending:NO];
//    NSSortDescriptor *sortDesc = [NSSortDescriptor sortDescriptorWithKey:@"_age" ascending:NO];
//    NSSortDescriptor *sortDesc = [NSSortDescriptor sortDescriptorWithKey:@"_ageStr" ascending:YES];
    NSArray *sortedArr = [arr sortedArrayUsingDescriptors:@[sortDesc]];
    NSLog(@"sort arr is %@",sortedArr);

我们来看看控制台打印:
第一种为
"model name is \U674e\U6d9b2,model agestr is 24,model age is 26",
"model name is \U674e\U6d9b1,model agestr is 25,model age is 25",
"model name is \U674e\U6d9b,model agestr is 26,model age is 24"
第二种为
"model name is \U674e\U6d9b2,model agestr is 24,model age is 26",
"model name is \U674e\U6d9b1,model agestr is 25,model age is 25",
"model name is \U674e\U6d9b,model agestr is 26,model age is 24"
第三种为
"model name is \U674e\U6d9b2,model agestr is 24,model age is 26",
"model name is \U674e\U6d9b1,model agestr is 25,model age is 25",
"model name is \U674e\U6d9b,model agestr is 26,model age is 24"

OK,妈妈再也不用担心后台大佬乱给我传数据了。

---来自涛胖子的工作笔记

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 数组可对其中包含的元素进行排序。 在排序前,我们需要定义一个Model类,将Model类对象添加至数组中。 定义一...
    SkyMing一C阅读 13,730评论 0 15
  • 排序规则描述类: NSSortDescriptor NSSortDescriptor来指定排序规则, 对集合等进行...
    SkyMing一C阅读 11,629评论 3 12
  • 打工多年,做过不少荒唐事,但有些荒唐事是无法改变的,发生只发生在一瞬间,但影响很大,后果也很严重。比如迟到这种事情...
    李一十八阅读 1,462评论 0 0
  • 姓名:王亮 日精进打卡第9天 【打卡始于2017.10.14持续于2017.10.22】 【知~学习】...
    口力口非阅读 1,222评论 0 0