objective-c - 在 Cocoa/xcode到文件中,如何保存文本/数据?

  显示原文与译文双语对照的内容
0 0

很抱歉的问题,但是在写数据到文件时应该小心点,因为我的程序可以读取它所写的数据,而程序正在运行,但是我停止它,文件变得空了。

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

序列化对象的array,而NSLog显示一个有效的array 。 但是,当我稍后查看该文件,或者尝试 unserialize array ( 这样):


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);

它只是打印( 空) 。(当他们执行一个接一个在单个运行,它unserializes很好)

感谢你的帮助。

时间: 原作者:

0 0

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


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

文档目录通常是一个地方,你可以编写文件,因此你可能希望为该文件提供一个尝试。

原作者:
...