2010-06-20 93 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

一般情況下,如果你想比較兩個對象,尋找一個類/實例方法這樣做。比較兩個對象指針與==只會比較指針本身,這不是你想要的。