在coreData里 按时间给对象进行排序

这篇博客介绍了如何在CoreData中查询并按照时间对数据对象进行排序。首先,通过NSFetchRequest获取数据,然后创建一个可变数组存储模型对象。接着,利用sortedArrayUsingComparator进行排序,依据的是模型对象中的日期属性,通过NSDateFormatter转换为NSDate进行比较,最后返回排序后的数组。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#pragma mark 查询

- (NSArray*)queryScoreData:(NSString *)kemu{

//先取出coredata里的数据

    NSManagedObjectContext *context = [self managedObjectContext];

    NSPredicate *predicate = [NSPredicate

                              predicateWithFormat:@"kemu = %@",kemu];

    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];

    NSEntityDescription *entity = [NSEntityDescription entityForName:@"MyScores" inManagedObjectContext:context];

    [fetchRequest setEntity:entity];

    [fetchRequest setFetchLimit:100];

    [fetchRequest setFetchOffset:0];

    [fetchRequest setPredicate:predicate];

    NSError *error;

    NSArray *Objects = [context executeFetchRequest:fetchRequest error:&error];


//遍历你的模型类  //注意下面注释掉的 是我总崩的原因。resultArray 里面必须存对象,不要存其他形式的东西比如:数组。

    NSMutableArray *resultArray = [NSMutableArray array];

    for (MyScores *modelObj in Objects) {

//        NSMutableArray *mutArray = [NSMutableArray array];

//        [mutArray addObject:modelObj.time];

//        [mutArray addObject:modelObj.score];

//        [mutArray addObject:modelObj.date];

//        [resultArray addObject:mutArray];

        

        [resultArray addObject:modelObj];

    }


    //排序

    NSArray *sortArray = [resultArray sortedArrayUsingComparator:^NSComparisonResult(MyScores* obj1, MyScores* obj2) {

        

        MyScores *pModel1 = (MyScores*)obj1;

        MyScores *pModel2 = (MyScores*)obj2;

        

        NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];

        [dateFormatter setDateFormat: @"yyyyMMddhh:mm"];

        NSDate *date1=[NSDate date];

        date1 = [dateFormatter dateFromString:pModel1.date];

        NSDate *date2=[NSDate date];

        date2= [dateFormatter dateFromString:pModel2.date];//再根据string类型的日期转回来,成为NSDate类型

        if (date1 == [date1 earlierDate: date2]) { //不使用intValue比较无效

            return NSOrderedDescending;//降序

        }else if (date1 == [date1 laterDate: date2]) {

            return NSOrderedAscending;//升序

        }else{

            return NSOrderedSame;//相等  

        }  

        

    }];

    return sortArray;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值