Core data 从核心数据比较两个NSD数据

Core data 从核心数据比较两个NSD数据,core-data,nsdate,Core Data,Nsdate,我有个问题。。。我在核心数据中有一个带有日期属性的实体。我希望我的应用程序能够检查数据存储是否存在具有今天日期的记录,以便用户可以继续或覆盖它。问题是,我只是使用NSPredicate获取请求,如下所示: self.whereClause = [NSPredicate predicateWithFormat:@"(date = %@)", [NSDate date]]; 当我将日期打印到控制台时,它们就会显示出来 date: 2012-04-26 22:16:45 +0000 应用程序无法识

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

self.whereClause = [NSPredicate predicateWithFormat:@"(date = %@)", [NSDate date]];
当我将日期打印到控制台时,它们就会显示出来

date: 2012-04-26 22:16:45 +0000
应用程序无法识别是否存在现有记录。。。。我觉得可能是因为时间/时区的因素


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

您需要创建日期并将其与00:00时间进行比较 [NSDate date]始终包含当前时间,因此无法仅匹配日期

请看一看如何创建具有完全相同时间的日期

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


如果您想搜索单个精确匹配,我建议您使用第一种解决方案。

这里有一个链接,指向从NSDate中删除时间组件的代码片段,以防有人怀疑


它起作用了!我用NSDateComponents将时间设置为下午5:00,日期现在工作得很好,非常感谢!