Core data 谓词无法获取属性类型为“的对象”;NSDate“;来自核心数据的对象

Core data 谓词无法获取属性类型为“的对象”;NSDate“;来自核心数据的对象,core-data,nsdate,nspredicate,nsdateformatter,nscalendar,Core Data,Nsdate,Nspredicate,Nsdateformatter,Nscalendar,我从互联网收到的日期格式如下: “2014-12-01T20:00:00Z” 我正在核心数据中存储此格式的日期。属性类型也是“Nsdate”类型 使用获取[NSDate Date]的开始时间 - (NSDate *)cc_dateByMovingToBeginningOfDay { unsigned int flags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | N

我从互联网收到的日期格式如下:

“2014-12-01T20:00:00Z”

我正在核心数据中存储此格式的日期。属性类型也是“Nsdate”类型

使用获取[NSDate Date]的开始时间

- (NSDate *)cc_dateByMovingToBeginningOfDay
{
  unsigned int flags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;
  NSDateComponents* parts = [[NSCalendar currentCalendar] components:flags fromDate:self];
  [parts setHour:0];
  [parts setMinute:0];
  [parts setSecond:0];
  return [[NSCalendar currentCalendar] dateFromComponents:parts];
}
和[NSDate Date]的结束时间,使用:

- (NSDate *)cc_dateByMovingToEndOfDay
{
  unsigned int flags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;
  NSDateComponents* parts = [[NSCalendar currentCalendar] components:flags fromDate:self];
  [parts setHour:23];
  [parts setMinute:59];
  [parts setSecond:59];
  return [[NSCalendar currentCalendar] dateFromComponents:parts];
}
用这个取景:

- (void)ObjectsFrom:(NSDate *)fromDate to:(NSDate *)toDate {
            NSPredicate *predicate = [NSPredicate predicateWithFormat:@"((due_at > %@) AND (due_at < %@))",fromDate, toDate];
}
-(void)对象从:(NSDate*)从日期到:(NSDate*)到日期{
NSPredicate*谓词=[NSPredicate谓词格式:@“(到期日>%@)和(到期日<%@)”,fromDate,toDate];
}
但是记录总是零。正如我所知,在我今天的约会中,我在数据库中有多个记录。我不知道为什么会发生这种情况

我还使用了日期的NSComparisonResult,但日期之间没有记录


因此,请帮我解决这个问题。

您的日期格式错误。“2014-12-01T20:00:00Z”中的“Z”是“ISO8601时区格式”,需要日期格式中的“ZZZZ”:

[formatter setDateFormat:@"yyyy'-'dd'-'MM'T'HH':'mm':'ssZZZZZ"];
否则,
dateFromString:
将返回
nil


更多信息。

我用这种方法做了一个比较结果,但也失败了。。静态BOOL是介于决定性(NSDate*date,NSDate*begin,NSDate*end){return[date compare:begin]!=传感器解除搜索和[date compare:end]!=传感器解除搜索;}
[formatter setDateFormat:@"yyyy'-'dd'-'MM'T'HH':'mm':'ssZZZZZ"];