iphone写入文件失败
Posted
技术标签:
【中文标题】iphone写入文件失败【英文标题】:iphone write to file fails 【发布时间】:2010-08-02 10:45:00 【问题描述】:我正在将一些数据写入 plist 文件,但它在设备上失败,但在模拟器中却没有。我迷路了,不知道在哪里寻找解决方案。
这是我的代码:
NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
[dict setObject:nameField.text forKey:@"name"];
[dict setObject:emailField.text forKey:@"email"];
BOOL ret = [dict writeToFile:[[NSString alloc] initWithString:[[NSBundle mainBundle] pathForResource:@"settings" ofType:@"plist"]] atomically:YES];
NSLog(@"%d",ret);
[dict release];
日志在设备上返回 0,但在模拟器中返回 1。
有人可以帮帮我吗?
【问题讨论】:
【参考方案1】:为什么要写入资源目录?你查过this吗?
【讨论】:
【参考方案2】:这在设备上失败,因为您无法写入应用程序的捆绑文件夹,只能写入 /tmp、Documents 和 Cache 文件夹。如果用户能够修改捆绑包,则该应用的数字签名将不再有效,并且没有人能够可靠地从 App Store 获取您的完整应用并运行它。
但是,这在模拟器上有效,因为您的操作系统将允许您写入主文件夹中的几乎任何位置,包括应用程序包文件夹。 OS X 的功能不受 ios 的限制。
这是 iOS 的 sandbox approach 安全性的一部分。解决办法是write to the /tmp, Documents or Cache folder, instead。
【讨论】:
以上是关于iphone写入文件失败的主要内容,如果未能解决你的问题,请参考以下文章
iPhone API 是不是允许应用程序读取/写入 iPhone 的文件系统?
Swift:写入 JSON 并在本地保存到 iPhone 文件