1
每次事件被觸發時,我的應用程序記錄了日期:的Xcode - 讀取包含的NSDate一個文件對象
NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *filename = [path stringByAppendingPathComponent:@"dates.dat"];
if (![[NSFileManager defaultManager] fileExistsAtPath:filename]) {
[[NSFileManager defaultManager] createFileAtPath:filename
contents:nil
attributes:nil];
}
NSFileHandle *wHandle = [NSFileHandle fileHandleForWritingAtPath:filename];
[wHandle seekToEndOfFile];
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:[NSDate date]];
[wHandle writeData:data];
[wHandle closeFile];
我成功地記錄事件的日期。但現在我在閱讀中遇到麻煩。我試過,但應用程序崩潰:
NSData *restore = [NSData dataWithContentsOfFile:filename];
NSArray *date1 = [NSKeyedUnarchiver unarchiveObjectWithData:restore]; // crash here!
我注意到,它需要223個字節爲每個NSDate的寫,但沒有被正式提及。所以恐怕使用223個字節作爲解析文件「dates.dat」的長度會在稍後導致問題。
你有什麼想法將dates.dat讀入NSArray,這樣我就可以繼續它的值了嗎?
在此先感謝
謝謝,Wain。我曾考慮將每個[NSDate日期]轉換爲NSString,然後繼續,但我只是想知道是否有更優雅的解決方案。 – quanguyen
以時間間隔編號或'NSData'存儲比字符串(格式化和解析問題)要好。但是你的問題是你處理多個日期 - 這就是你需要組織的。文件中的每行一個日期應該起作用,逗號分隔。你有多少日期?你用它們做什麼?你只需要恢復最後一個?這些東西需要考慮知道什麼更優雅的解決方案看起來像... – Wain
我決定將NSDate對象轉換爲時代,整數;然後寫入文件並恢復它們進行處理,我相信現在是最簡單的解決方案。 – quanguyen