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

dee*_*dee 5 file-io ios

我的应用程序将用户信息/首选项的加密数据写入文件,并在下次打开应用程序时从该文件中读取.

写文件:

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

阅读文件:

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

这在模拟器上工作正常.按预期编写和读取文件.有什么我必须设置文件读/写在设备上?

jrt*_*ton 7

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

获取文档目录如下:

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

把它传递给你上面的函数你应该没问题.