1

我有一个 NSManagedObject, foo 存储它创建的 NSDate。它还有另一个字段 lifespan 存储对象有效的秒数。每个 foo 可以有不同的生命周期值。是否可以退回所有未超过其寿命的foos?我不确定如何在我的 NSPredicate 中表达这一点,或者是否有可能?

4

2 回答 2

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

于 2013-07-15T17:26:08.000 回答
2

Core Data 获取请求实际上可以包含简单的算术表达式。因此,要查找“已创建 + 寿命 >= 现在”的所有对象,请执行以下操作:

NSDate *now = [NSDate date];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"created + lifespan >= %@", now];
于 2013-07-15T20:14:47.800 回答