iOS:保存到文件可在模拟器上运行,但不能在设备上运行

时间:2011-10-18 13:55:29

标签: ios file-io

我的应用将用户信息/偏好设置的加密数据写入文件,并在下次打开应用时从该文件中读取。

写一个文件:

- (BOOL)writeFile:(NSString *)data:(NSString *)fileName {
  return [data writeToFile:fileName
                atomically:YES
                  encoding:NSUTF8StringEncoding error:nil];
}

阅读文件:

- (NSString *)readFile:(NSString *)fileName {
  NSData *data = [NSData dataWithContentsOfFile:fileName];
  NSString *str = [[[NSString alloc] initWithData:data
                                         encoding:NSUTF8StringEncoding] autorelease];
  return str;
}

这在模拟器上运行良好。按预期编写和读取文件。有没有什么我必须设置文件读/写设备?

1 个答案:

答案 0 :(得分:7)

文件名必须位于文档目录中。模拟器对设备写入文件的位置没有那么多限制。

获取文档目录,如下所示:

NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *fileName = [documentsDirectory stringByAppendingPathComponent:@"myfilename.extension"];

将其传递给上面的函数,你应该没问题。