timeIntervalSinceReferenceDate
기능을 NSDate
으로 보았습니다. 이 함수를 사용하여 간격을 디스크에 저장 한 다음 원래 값과 동일한 값으로 NSDate
으로 되돌릴 수 있습니까? 참조 또는 간격이 컴퓨터마다 다를 수 있으며 다른 컴퓨터에서 다르게 나타날 수 있습니다.디스크에 nsdate 저장
7
A
답변
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];
오류 검사가 수행되지 않습니다. 그보다 잘 수행하십시오. ;-)
2
timeIntervalSinceReferenceDate
의 결과를 저장하려면 NSNumber에 이중으로 저장 한 다음 Joshua의 NSKeyedArchiver 메서드를 사용하여 디스크에 저장할 수 있습니다.
+0
또는 보관 처리를하지 않고도 8 바이트의 이중 바이트를 쓸 수 있습니다. – JWWalker
NSKeyedArchiver는 NSData없이 파일에 직접 쓸 수도 있습니다. –
+ archiveRootObject : toFile : true입니다. –
작동하지 않습니다, 그것은 말합니다 : - [NSKeyedUnarchiver initForReadingWithData :] : 데이터가 NULL입니다 – Idan