2012-09-19 131 views
6

在我的模型我有日期属性,我把它[NSDate date],但断言越来越像核心数据NSPredicate日期

NSPredicate *predicate = [NSPredicate predicateWithFormat: 
           @"date==%@ ,date]; 

回报诺丁山。我知道问题是当我设置[NSDate date]它也存储时间和NSPredicate总是返回空数据。有什么办法可以将"date==%@"部分转换成仅查找日期?

+0

做这样的日期的谓词的问题是,这将做一个亚毫秒的比较;你必须*正好*相同的时刻,而不仅仅是同一个日历日。 –

+0

这个“你必须有完全相同的时间”使我想到了这个想法来处理日期时间:在存储日期之前将日期的时间全部设置为0。并且从模型中检索时将日期值与时间一起传递为0。 –

回答

18
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(date >= %@) AND (date <= %@)", startDate, endDate]; 
+0

感谢您的回复,但我有一个约会(今天)。 endDate应该是明天吗? – Ercan

+0

其你的选择..不给结束日期,删除部分。只传递startDate。 NSPredicate * predicate = [NSPredicate predicateWithFormat:@“(date> =%@)”,startDate]; – cancerian

+0

只设置startDate,如果我在日期前2天给它返回2天前和今天之间的所有记录。我修正了在选定的日期添加1天,并使用endDate的第一个响应。 – Ercan