0

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

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

当我将日期打印到控制台时,它们会出现

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

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

那么我如何比较从 Core Data 中检索到的两个 NSDate 对象而没有时间组件呢?

4

2 回答 2

0

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

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

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

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

于 2012-04-27T06:57:41.520 回答
0

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

从 NSDate 中移除时间组件

于 2012-10-03T14:16:38.147 回答