比较Core Data的两个NSDates

时间:2012-04-26 22:35:01

标签: core-data nsdate

我有一个问题......我在核心数据中有一个带有日期属性的实体。我希望我的应用程序能够检查数据存储是否存在具有今天日期的记录,以便用户可以继续或覆盖它。问题是我只是使用像这样的NSPredicate获取请求:

self.whereClause = [NSPredicate predicateWithFormat:@"(date = %@)", [NSDate date]];

当我将日期打印到他们出现的控制台时

date: 2012-04-26 22:16:45 +0000

并且应用程序无法识别存在现有记录....我觉得可能是因为时间/时区组件......

那么如何在没有时间组件的情况下比较从Core Data检索到的两个NSDate对象呢?

2 个答案:

答案 0 :(得分:0)

您需要使用00:00时间创建和比较日期 [NSDate date]始终包含当前时间,因此无法仅匹配日期。

查看NSDateComponents以完全相同的时间创建日期。

另一个解决方案是创建一个搜索查询(日期> 2012-04-26 00:00:00和日期< 2012-04-26 23:59:59)(需要在开始时创建日期和时间并结束一天)

如果你想搜索一个完全匹配,我会推荐第一个解决方案。

答案 1 :(得分:0)

这是一个指向代码片段的链接,用于从NSDate中删除时间组件,以防有人想知道

Removing time component from NSDate