2011-04-29 235 views
7

我看了NSDatetimeIntervalSinceReferenceDate函數。我可以使用此功能將間隔存儲到磁盤,然後將其返回到NSDate,其值與原始值相同?我很謹慎,參考或時間間隔可能因機器而異,而在另一臺計算機上出現差異?將nsdate保存到磁盤

回答

29

NSDate可以歸檔爲NSData實例,NSData可以很容易地寫入/讀取磁盤。

// Create and store it 
NSDate * date = [NSDate date]; 
NSData * dateData = [NSKeyedArchiver archivedDataWithRootObject:date]; 
[dateData writeToFile:@"/Some/path/to/file.dat" atomically:NO]; 

// Now bring it back 
NSData * restoredDateData = [NSData dataWithContentsOfFile:@"/Some/path/to/file.dat"]; 
NSDate * restoredDate = [NSKeyedUnarchiver unarchiveObjectWithData:restoredDateData]; 

沒有錯誤檢查完成。比這更好。 ;-)

+1

NSKeyedArchiver也可以直接寫入沒有NSData的文件。 – 2011-06-08 21:12:01

+1

+ archiveRootObject:toFile: - true。 – 2011-06-08 21:20:22

+0

不起作用,它說: - [NSKeyedUnarchiver initForReadingWithData:]:data is NULL – Idan 2012-08-02 00:28:16

2

或者,如果要存儲timeIntervalSinceReferenceDate的結果,可以將它作爲double存儲在NSNumber中,然後使用Joshua的NSKeyedArchiver方法將其保存到磁盤。

+0

或者你可以只寫8個字節的雙精度,而不用打擾歸檔。 – JWWalker 2017-03-09 17:06:59