如何将可可/xcode中的文本/数据保存到文件中


对于

显而易见的问题,我很抱歉,但是在将数据写入文件时我应该注意什么吗,因为我的程序可以在程序运行时读取它刚刚写入的数据,但是当我停止它的那一刻,文件就变成了空

尝试使用 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);

它只是打印(空)。(当他们在一次运行中一个接一个地执行时,它可以很好地反序列化)

我很感激你的帮助。

问题是你在哪里写你的文件?因为不允许在iOS中在整个系统中写入文件。

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];

文档目录通常是您可以编写文件的地方,因此您可能想尝试一下。

最新更新