2011-03-29 93 views
0

我有一个托管对象有两个日期:dateOne和dateTwo,我想检索dateTwo比dateOne更早的日期。NSPredicate在CoreData比较日期

现在我用下面的谓词来获取对象:

NSArray *objects = nil; 

NSFetchRequest *request = [[NSFetchRequest alloc] init]; 
request.entity = [NSEntityDescription entityForName:@"Object" inManagedObjectContext:context]; 
request.predicate = [NSPredicate predicateWithFormat:@"dateOne > dateTwo", @""]; 

objects = [context executeFetchRequest:request error:nil]; 
[request release]; 

有时它的工作原理,但其他时候的对象获取有dateTwo比dateOne更近。有没有更好的方法来做这样的事情?

谢谢!

回答

0

也许你可以添加一个布尔属性“dateTwoIsOlder”到实体,然后只是获取对象坚持呢?

+0

这是一个好主意。谢谢! :) – Derek 2011-03-30 15:36:06

+0

的作品,但可能不是最好的想法,因为现在你必须担心该布尔不同步。你也不想让它成为一个瞬态属性,因为所有对象都必须加载到内存中才能处理请求。应该是一个谓词格式,它可以提供端口,现在可以查看interwebs。 – 2011-10-12 19:37:25

0

为什么不直接从核心数据创建fetch request而不是以编程方式执行?