使用 NSPredicate 比较核心数据查询中的日期
Posted
技术标签:
【中文标题】使用 NSPredicate 比较核心数据查询中的日期【英文标题】:Comparing dates in Core Data query using NSPredicate 【发布时间】:2012-02-14 10:16:31 【问题描述】:我的核心数据模型有一个 NSDate 属性,如下所示:
@interface DBVial : NSManagedObject
@property (nonatomic, retain) NSDate * updated_at;
如何从 DBVial 的所有记录中获取最新(根据 updated_at)记录?我可以使用 NSPredicate 来执行它吗? 我知道我可以获取所有这些,然后对它们进行排序并获得第一个,但是否可以只使用 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];
【讨论】:
以上是关于使用 NSPredicate 比较核心数据查询中的日期的主要内容,如果未能解决你的问题,请参考以下文章
在保存到核心数据之前将字符串与 NSPredicate 进行比较
使用 JOIN 访问 NSPredicate 中的核心数据实体关系