我有一个NSManagedObject,foo存储它创建的NSDate。它还有另一个字段,寿命可以存储对象有效的秒数。每个foo可以具有不同的寿命值。是否有可能归还所有没有超过其寿命的foos?我不确定如何在我的NSPredicate中表达这一点,或者甚至是否可能?
答案 0 :(得分:2)
是的,有可能。 例如:
NSDate * yesterday = [NSDate dateWithTimeIntervalSinceNow:-(60 * 60 * 24)];
NSPredicate * predicate = [[NSPredicate alloc] initWithFormat:@"dateCreated > %@", yesterday];
NSFetchRequest * fetchRequest = [[NSFetchRequest alloc] init];
[fetchRequest setPredicate:predicate];
NSError * error = nil;
NSArray * results = [managedObjectContext executeFetchRequest:fetchRequest error:&error];
以下是有关编写谓词的更多信息:http://developer.apple.com/library/ios/#DOCUMENTATION/Cocoa/Conceptual/Predicates/Articles/pCreating.html
答案 1 :(得分:2)
核心数据获取请求实际上可以包含简单的算术表达式。 所以要查找“created + lifespan> = now”的所有对象, 以下作品:
NSDate *now = [NSDate date];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"created + lifespan >= %@", now];