0
我有一個實體,其屬性爲time
,它的類型爲Date。我只關心它的時間部分。在生成類文件時,我選擇對基本數據類型使用標量屬性。因此,使用NSTimeInterval
代替NSDate
。核心數據:基於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
之前,有些人後。 Bue當我使用[NSDate compare:]
比較timeNow
與返回記錄的time
屬性時,它實際上返回了正確的結果!
哪裏出錯了?
你爲什麼要在第二段代碼中對日期 - >字符串 - >日期進行雙向轉換? – Eimantas
兩個原因:(1)使轉換與第一次插入數據庫時的轉換相同;(2)這是從1970年起基於時間間隔獲得時間分量的最快方式,這是時間間隔存儲在數據庫中。 –