2010-08-02 407 views
0

我正在写一些数据到plist文件,但它在设备上失败,但不在模拟器中。我迷路了,不知道在哪里寻找解决方案。iphone写入文件失败

这是我的代码:

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在模拟器。

有人可以帮我吗?

回答

0

你为什么试图写在资源目录?你有没有检查this

1

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

但是,这可以在模拟器上运行,因为您的操作系统可以让您在主文件夹中的任何位置写入文件,包括应用程序包文件夹。 OS X的功能不受iOS限制的相同限制。

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

+0

感谢人 工作很好 – 2010-08-02 12:38:20