入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

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

创建时间:2016-04-19 投稿人: 浏览次数:7082

单纯的根据字符串、数字排序很简单;但是更多的使用场景是 ---- 根据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;//相等
            
        }
        
    }];


声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。