写入驻留在Xcode项目目录中的文件

时间:2011-10-05 14:31:38

标签: objective-c ios

我目前正在编写将数据(数据从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]);
}

1 个答案:

答案 0 :(得分:3)

在iOS中,应用程序包已签名并且只读,因此不受限制。相反,有一个文件区域,其中一个目录是Documents,这是一个非常好的保存数据的地方。

这是一个演示访问Documents目录的代码片段:

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