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:如何在应用程序目录中将图像写入磁盘

iphone,在沙箱中写入csv文件

iPhone API 是不是允许应用程序读取/写入 iPhone 的文件系统?

Swift:写入 JSON 并在本地保存到 iPhone 文件

如何 Flutter 将文件写入 iOS iPhone“在我的手机上查找”文件夹

将文件写入 NSDocument 目录在 iPhone 中显示 UIProgressView?