iphone写入文件失败

时间:2010-08-02 10:45:00

标签: ios objective-c iphone xcode storage

我正在将一些数据写入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。

有人可以帮帮我吗?

2 个答案:

答案 0 :(得分:1)

这在设备上失败,因为您无法写入应用程序的包文件夹,只能写入/ tmp,Documents和Cache文件夹。如果用户能够修改捆绑包,则应用程序的数字签名将不再有效,并且没有人能够从App Store可靠地获取完整的应用程序并运行它。

然而,这适用于模拟器,因为您的操作系统将允许您在主文件夹中的任何位置写入,包括应用程序包文件夹。 OS X的功能不受iOS限制的限制。

这是iOS sandbox approach安全性的一部分。解决方案是write to the /tmp, Documents or Cache folder, instead

答案 1 :(得分:0)

你为什么要写资源目录?你检查过this吗?