我有一个带有属性的实体time
,它的类型是 Date。我只关心它的时间部分。在生成类文件时,我选择对原始数据类型使用标量属性。因此,NSTimeInterval
使用 代替NSDate
。
要存储属性,我必须在将其分配给实体之前time
解析字符串:NSDateFormatter
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"H:mm"];
NSTimeInterval time = [[dateFormatter dateFromString:@"19:20"] timeIntervalSince1970];
entity.time = time;
当使用谓词获取记录时,我再次使用NSDateFormatter
“截断”日期组件:
NSDate *timeNow = [self.defaultDateFormatter dateFromString:
[self.defaultDateFormatter stringFromDate:[NSDate date]]];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"time >= %@", timeNow];
// build the rest of the NSFetchRequest...
问题是,所有记录都回来了:有些记录time
之前有属性,有些记录timeNow
在之后。但是当我使用 比较返回记录timeNow
的time
属性时[NSDate compare:]
,它实际上返回了正确的结果!
哪里出错了?