2010-06-20 97 views
2

我使用iPhone上的datePicker在Core Data中存储日期属性。然后我想用==来比较匹配某个日期的日期,但是我无法使其工作。虽然大于和小于似乎工作正常。核心数据NSDate比较

起初我是直接从datePicker存储日期,其中还包括时间信息。所以我用NSCalendar去掉了时间并且只是存储日期。

同样,我采用谓词的rhs并通过NSCalendar运行它来提取日期并进行比较,我仍然无法使==工作。

试图这样做的时间的一个的NSLog被存储在CoreData和日期进行比较,他们看起来完全相同 2010-06-19 00:00:00 -7:00

任何指针将理解。

编辑: 我试图做使用NSEqualToPredicateOperatorType在CoreData比较传递到

+ (NSPredicate *)predicateWithLeftExpression:(NSExpression *)lhs rightExpression:(NSExpression *)rhs modifier:(NSComparisonPredicateModifier)modifier type:(NSPredicateOperatorType)type options:(NSUInteger)options 

与LHS作为的keyPath到entity.dateAttribute 和RHS是[NSExpression expressionForConstantValue:指明MyDate]。

PS:我有上面的代码,然后意识到myDate包含一个时间组件,所以我修改了上面的代码,只提取日,月和年,并用它将它发送到NSExpression。

同样同时节省了时间,我确信,我只提取日期,月份和年份以及传递有效CoreDate使时间00:00:00(我希望!)

回答

0

compare:方法在NSDate类会给你你在找什么。

返回值

如果:

  • 接收机和anotherDate是完全彼此相等, NSOrderedSame
  • 接收机以后是在时间上比anotherDate,NSOrderedDescending
  • The接收器比另一个日期更早,NSOrderedAscending

一般情况下,如果你想比较两个对象,寻找一个类/实例方法这样做。比较两个对象指针与==只会比较指针本身,这不是你想要的。