2010-01-18 33 views
0

我讀過一些線程這個問題,但不幸的是沒有找到答案我的問題:((IPHONE)大混亂讀/寫從資源文件夾相同的文件

我在資源文件夾中的XML文件,以及i只需要重新寫入相同的文件; 該應用的邏輯是:從文件加載

  1. 顯示數據
  2. 新數據添加到相同的文件

用於讀取文件我的代碼是:

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"myfile" ofType:@"xml"]; 
NSData *dataXml=[NSData dataWithContentsOfFile:filePath]; 

重新寫同一個文件:

NSString *myDataString = @"?xml version=""1.0"" encoding=""UTF-8""?"; 
NSString *path = [[NSBundle mainBundle] pathForResource:@"myfile" ofType:@"xml"]; 
BOOL ok=[myDataString writeToFile:path atomically:YES encoding:NSUnicodeStringEncoding error:nil]; 

對於讀取工作正常,但是當我嘗試寫,不更新文件,但它是在另一個文件夾中創建的另一個文件夾,我已經在模擬器中測試了這一點,指出應用程序位於以下文件夾中:

用戶/用戶/庫/應用程序支持/ iPhoneSimulator /用戶/應用程序/ 05279766-7B2C -4FC0-BFB0-D87A158A3337/

其中有3個文件夾(Documents,tmp,Libary)和捆綁文件.app(其中有我的xml文件)

我的問題是:我的邏輯錯誤?在這種方式是管理應用程序文件夾中的設備?

在此先感謝和抱歉的長話!

回答

4

您不能將文件寫入您的應用程序包;它是隻讀的(在設備上,至少;你可以在模擬器中做到這一點)。

你應該做的是使用你的〜/ Documents文件夾作爲文件。如果它不在那裏,首先從你的包中讀取它,然後把它寫出來〜/ Documents,然後從那裏讀取它。

+0

謝謝你的relpy Ben!... 好的,但是當我在相同的路徑上調用writeToFile之前,我已經閱讀過,我的BOOL是真的;所以在哪裏文件夾(模擬器/設備)文件保存? 我可以在哪裏看到xcode中的〜/ Documents文件夾? – Mat 2010-01-18 16:30:43

+0

〜/ Documents是相對於您的應用程序的Documents文件夾;例如,Users/user/Library/Application Support/iPhoneSimulator/Users/Applications/05279766-7B2C-4FC0-BFB0-D87A158A3337/Documents – 2010-01-18 16:55:50