【问题标题】: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,而是将NSFetchRequest 的sortDescriptor 设置为按日期对记录进行排序,并设置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];