iOS根据日期、数值给model排序

来源:互联网 发布:手机淘宝怎么查看淘龄 编辑:程序博客网 时间:2024/05/16 07:09

单纯的根据字符串、数字排序很简单;但是更多的使用场景是 ---- 根据model中的某个属性,对模型数组进行排序。

今天我来写个简单的Demo 介绍根据数值、日期,对model进行排序。

这里使用的主要方法是:sortedArrayUsingComparator


iOS模型数组Demo下载地址


Demo 比较简单,效果如下:



下面来看代码:

1、对数据和view进行初始化,这里使用三个按钮和一个tableView,以及一个模型,及模型的各项属性;在此贴简要代码


#import <Foundation/Foundation.h>@interface Person : NSObject@property (nonatomic,copy) NSString *name;@property (nonatomic,assign) int age;@property (nonatomic,copy) NSString *ID;@property (nonatomic,copy) NSString *entryDate;@end


     Person *per3 = [[Person alloc] init];    per3.name = @"D";    per3.age = 28;    per3.ID = @"016";     per3.entryDate = @"2019-08-10 08:30";        [self.dataArray addObject:per3];        self.resultArray = [self.dataArray mutableCopy];

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];    if (!cell) {        cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:@"cell"];    }        Person *pModel = self.resultArray[indexPath.row];    cell.textLabel.text = [NSString stringWithFormat:@"名:%@ Age:%d",pModel.name,pModel.age];    cell.detailTextLabel.text = [NSString stringWithFormat:@"ID:%@ Date:%@",pModel.ID,pModel.entryDate];        cell.textLabel.font = [UIFont systemFontOfSize:12];    cell.detailTextLabel.font = [UIFont systemFontOfSize:12];        return cell;}


2、根据名字(字符串)进行排序。

NSArray *sortArray = [self.dataArray sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {        Person *pModel1 = obj1;    Person *pModel2 = obj2;        NSLog(@"type00 -- %ld",(long)tag);            if (pModel1.name > pModel2.name) { //不使用intValue比较无效        return NSOrderedDescending;//降序    }else if (pModel1.name < pModel2.name){        return NSOrderedAscending;//升序    }else {        return NSOrderedSame;//相等    }    }];




3、根据年龄(数值)对数组进行排序

NSArray *sortArray = [self.dataArray sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {        Person *pModel1 = obj1;    Person *pModel2 = obj2;            //按照年龄排序    if (pModel1.age > pModel2.age) { //不使用intValue比较无效        return NSOrderedDescending;//降序    }else if (pModel1.age < pModel2.age){        return NSOrderedAscending;//升序    }else {        return NSOrderedSame;//相等    }    }];


4、根据入职时间进行排序

 NSArray *sortArray = [self.dataArray sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {        Person *pModel1 = obj1;    Person *pModel2 = obj2;        //入职时间        NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];        [dateFormatter setDateFormat: @"yyyy-MM-dd HH:mm"];        NSDate *date1= [dateFormatter dateFromString:pModel1.entryDate];    NSDate *date2= [dateFormatter dateFromString:pModel2.entryDate];        if (date1 == [date1 earlierDate: date2]) { //不使用intValue比较无效                return NSOrderedDescending;//降序            }else if (date1 == [date1 laterDate: date2]) {        return NSOrderedAscending;//升序            }else{        return NSOrderedSame;//相等    } }];

5、根据编号进行排序,编号需要转化成为数值,使用intValue

NSArray *sortArray = [self.dataArray sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {        Person *pModel1 = obj1;    Person *pModel2 = obj2;            if (tag == 1) {//按照ID排序        if (pModel1.ID.intValue > pModel2.ID.intValue) { //不使用intValue比较无效                        return NSOrderedDescending;//降序                    }else if (pModel1.ID.intValue < pModel2.ID.intValue)        {            return NSOrderedAscending;//升序                    }else        {            return NSOrderedSame;//相等                    }            }];


0 0
原创粉丝点击