我目前正在编写将数据(数据从HTTP响应生成)写入驻留在Xcode项目目录(应用程序包)中的xml文件的代码。很遗憾,我无法写入驻留的xml文件在Xcode项目中,所以,我尝试了相同的代码,我只是修改了文件路径,指向驻留在桌面上的xml文件(我选择了一个不同的位置,以便进一步调查问题)并且令人惊讶的是它在哪里工作简单的字符串被写入xml文件。我读了一些帖子说我们无法写入App包中的文件,因为这方面对Iphone有限制。真的吗 ?如果是这样,有没有其他选择。如果有人对此问题有所了解并能提供帮助,我将非常感激。请注意,我声明了一个错误变量,并试图查看是否可以记录任何错误消息,但调试器没有输入if语句(因此没有捕获写入错误)。下面是我写的示例代码:
//writing to a file
NSString *file_path = [[NSBundle mainBundle] pathForResource:@"sample" ofType:@"xml"];
NSString *dummy = @"Hello World!!\n";
NSFileManager *filemanger;
NSError *writingError = nil;
filemanger = [NSFileManager defaultManager];
if ([filemanger fileExistsAtPath:file_path] == YES)
NSLog (@"File do exist!!!");
else
NSLog (@"File is not found!!!");
BOOL sucess = [dummy writeToFile:file_path atomically:YES encoding:NSUnicodeStringEncoding error:&writingError];
if(!sucess)
{
NSLog(@"Unable to write to the file");
}
if (writingError) {
NSLog(@"Fail: %@", [writingError localizedDescription]);
}
答案 0 :(得分:3)
在iOS中,应用程序包已签名并且只读,因此不受限制。相反,有一个文件区域,其中一个目录是Documents,这是一个非常好的保存数据的地方。
这是一个演示访问Documents目录的代码片段:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:fileName];