2012-03-08 155 views
-1

我得到了iOS應用程序。我需要存儲一些數據。我試圖做到這一點在txt文件是這樣的:保存txt文件中的數據

[toFile writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:NULL]; 

但是,當我dissmis視圖控制器,我在那裏保存數據,文件的內容爲空一次。爲什麼?

回答

0

我敢打賭,你正試圖寫入你的應用程序包。你不能。你必須在NSDocumentsDirectory或[app sandbox]/Library中編寫。

+0

的NSString *路徑= [[一個NSBundle mainBundle] pathForResource:@「user」ofType:@「txt」]; - 這是錯的嗎? – 2012-03-08 09:25:13

+1

是的。你不能寫入你的應用程序包。 – 2012-03-08 09:27:03

+0

說真的,爲什麼在地球上你低估了這個? – 2012-03-08 13:59:17

0

傳遞一個NSError *參數你writeToFilewriteToFile回報NO(這意味着它失敗了),你可以打印出NSError信息來幫助你找出什麼地方出了錯。

例如:

NSError * error = nil; 
BOOL success; 

success = [toFile writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:&error]; 

if (success == NO) 
{ 
    NSLog(@"error in writeToFile - %@", [error localizedDescription]); 
} 
3

確保您保存文件的文檔目錄中,而不是資源目錄,因爲你不能寫信給你的應用程序包。

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"user.txt"]; 

還檢查了iOS Storage Guidelines(需要登錄):

  1. 只有文件和其他數據是用戶生成的,或者說不能,否則您的應用程序中重新創建,應存放在 /Documents目錄,並將自動備份由iCloud 。

我認爲有教程,可以幫助您瞭解如何使用目錄和文件的工作在iOS上:

+0

我應該在哪裏放置我的.txt文件在項目中? – 2012-03-08 09:26:50

+1

我更新了我的例子。如果你生成這樣的filePath它應該工作:) – dom 2012-03-08 09:28:18

+0

是的。但我應該在哪裏第一次創建此文件?你的鏈接不起作用「這個網頁有一個重定向循環」 – 2012-03-08 09:34:39