2010-08-02 405 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