【问题标题】:Core Data NSPredicate for date日期的核心数据 NSPredicate
【发布时间】:2012-09-19 17:39:31
【问题描述】:

在我的模型中,我有日期属性,我将其设置为 [NSDate date],但使用诸如

之类的谓词
 NSPredicate *predicate = [NSPredicate predicateWithFormat:
                              @"date==%@ ,date]; 

返回noting。我知道问题是当我设置[NSDate date] 它还存储时间并且 NSPredicate 总是返回空数据。有没有办法将"date==%@" 部分转换为只查找日期?

【问题讨论】:

  • 用这样的日期做谓词的问题在于,这将是一个亚毫秒级的比较;您必须完全在同一时刻,而不仅仅是同一日历日。
  • 这个“你必须有完全相同的时间”让我想到了处理日期时间的这个想法:在存储日期之前将日期时间全部设为 0。当从模型中检索时,传递一个时间为 0s 的日期值。

标签: date core-data nspredicate


【解决方案1】:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(date >= %@) AND (date <= %@)", startDate, endDate];

【讨论】:

  • 感谢您的回复,但我有一个约会(今天)。 endDate 应该是明天?
  • 它是你的选择.. 不要给出结束日期,删除 tat 部分。仅通过 startDate。 NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(date >= %@)", startDate];
  • 仅设置 startDate 导致如果我在日期前 2 天给出它会返回我在前 2 天和今天之间的所有记录。我修复了它,将所选日期添加了 1 天,并将您的第一个回复与 endDate 一起使用。
  • 括号真的有必要吗?
猜你喜欢
  • 2013-01-12
  • 1970-01-01
  • 2015-10-06
  • 1970-01-01
  • 1970-01-01
  • 2013-03-30
  • 2013-05-03
  • 2017-02-20
  • 1970-01-01
相关资源
最近更新 更多