【问题标题】:Comparing dates in Core Data query using NSPredicate使用 NSPredicate 比较核心数据查询中的日期
【发布时间】:2012-02-14 10:16:31
【问题描述】:

我的核心数据模型有一个 NSDate 属性,如下所示:

@interface DBVial : NSManagedObject
@property (nonatomic, retain) NSDate * updated_at;

如何从 DBVial 的所有记录中获取最新(根据 updated_at)记录?我可以使用 NSPredicate 来执行它吗? 我知道我可以获取所有这些,然后对它们进行排序并获得第一个,但是否可以只使用 NSPredicate 来代替?

【问题讨论】:

    标签: iphone core-data nsdate nspredicate


    【解决方案1】:

    是的。无需使用NSPredicate,而是将NSFetchRequestsortDescriptor 设置为按日期对记录进行排序,并设置fetchLimit 以便您仅获得最近的记录。像这样:

    NSFetchRequest *request = [[NSFetchRequest alloc] init];
    request.entity = [NSEntityDescription entityForName:@"DBVial" 
                                 inManagedObjectContext:yourManagedObjectContext];
    request.sortDescriptors = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"updated_at" ascending:NO]];
    request.fetchLimit = 1;
    NSError *error = nil;
    
    DBVial *mostRecent =  [[context executeFetchRequest:request error:&error] lastObject];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-27
      • 2012-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-12
      • 1970-01-01
      相关资源
      最近更新 更多