我很抱歉这个明显的问题,但是在将数据写入文件时我应该注意什么,因为我的程序可以在程序运行时读取它刚刚写入的数据,但是当我停止它的那一刻,文件变空
尝试使用 NSFileHandle,以便用它写入数据,然后关闭文件,没有帮助......目前,我正在使用:
NSData *encodedObject = [NSKeyedArchiver archivedDataWithRootObject:newArray];
[encodedObject writeToFile:string atomically:YES];
而且无论我做什么,我都无法让最简单的 NSString 永久保留在文件中
我该怎么办?
感谢@LetzFlow,但它还没有解决它。
现在,我正在使用:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
string = [NSString stringWithFormat:@"%d.rtf",fileName];
NSString *file = [documentsDirectory stringByAppendingPathComponent:string];
//NSFileHandle *fileHandle = [NSFileHandle fileHandleForWritingAtPath:file];
NSData *encodedObject = [NSKeyedArchiver archivedDataWithRootObject:newArray];
[encodedObject writeToFile:file atomically:YES];
//[fileHandle writeData:encodedObject];
//[fileHandle closeFile];
NSLog(@"%@",[NSString stringWithContentsOfFile:file encoding:NSStringEncodingConversionAllowLossy error:nil]);
序列化一个对象数组,并且 NSLog 显示一个有效的数组。然而,当我稍后查看文件时,或者尝试反序列化数组时(像这样):
NSString *stringX = [NSString stringWithFormat:@"%d.rtf",fileName];
NSData *encodedObjectX = [NSData dataWithContentsOfFile:stringX];
NSArray *newArrayX = [NSKeyedUnarchiver unarchiveObjectWithData:encodedObjectX];
TurnigButton *button = [[newArrayX objectAtIndex:1] objectAtIndex:5];
NSLog(@"%d", button.idNum);
它只是打印(空)。(当他们在一次运行中一个接一个地执行时,它反序列化就好了)
我很感激帮助。