2014-06-09 65 views
1

這裏是我所在的地方:如何添加文件到/ Documents目錄中的應用程序沙箱

I have JSON files I need to mount into Objective C Objects 

I have an XCode Project 

I have dragged the folder of JSON files into my project and 
created a blue "Documents" folder off of the root of the project. 

However, it does not appear in the app sandbox in the ~/Library/... folder. 

儘管對一組指令實現以上我都拿出了短搜索都這個網站等。

我也回顧了蘋果的文檔,並且發現了切向信息,但不是直接描述如何完成上述操作。

這裏是我的代碼:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; // Get documents folder 
NSString *lessonsDirectory = [documentsDirectory stringByAppendingPathComponent:@"/lessons"]; 

NSString *filePath = [lessonsDirectory stringByAppendingPathComponent:@"/52aa2b6e9af9b73896095404.json"]; 
NSLog(filePath); 

NSData *data = [NSData dataWithContentsOfFile:filePath]; 

//THE NEXT LINE ERRORS OUT -> "data parameter is nil' 
NSArray *json = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil]; 

概括地說:我如何在應用程序沙箱添加文件到/ Documents目錄?

+0

您發佈的代碼用於從'Documents'中讀取文件。使用類似的代碼將數據寫入'Documents'中的文件。 – rmaddy

+0

如果您想要預先加載帶有文件的文檔,則必須具有某種首次通過邏輯,可以從該文件夾複製文件。如果你仔細研究一下,這是一個在iOS上「啓動」SQLite數據庫時遇到的常見問題 - 相同的基本問題,以及需要查看的十幾個代碼示例。 –

+0

看看Xcode中的NSData類引用。在方法名稱中搜索包含單詞「write」的方法。儘管如此,我不打算給你答案。去看看文檔,看看你是否可以弄清楚。 –

回答

0

您到達的文檔目錄與您想要的文檔目錄不同。您需要捆綁包中的「文檔」目錄。

[[[NSBundle mainBundle] pathsForResourcesOfType:@"json" inDirectory:nil] enumerateObjectsUsingBlock:^(NSString *obj, NSUInteger idx, BOOL *stop) { 

^這將從ur捆綁(你在你的項目中拖動的那些)你不必指定文件夾獲得所有json類型的文件。您可以通過在所需的軟件包中指定文件夾來從所需的目錄中獲取特定的目錄。

+0

應用程序包不是不同的文檔目錄。它是一個不同的目錄,但不是文檔目錄。如果OP只需要閱讀這些文件,而不是寫它們,那麼是的,他可以從應用程序包中讀取它們,但不要混淆這樣的術語。你只會混淆東西。 –

+1

從發佈的代碼看來,OP似乎想從某處讀取文件。他似乎不想在任何地方寫東西。他在他的項目中添加了一些文件,並希望從中獲取數據。我發佈了與此相關的代碼。他似乎說他想將文件添加到沙箱的唯一原因是他目前的做法似乎不適合他。這就是我從他給出的描述中得出的結論。我從來沒有說過你可以寫文件捆綁,但我很高興你澄清了這一點。 –

+0

謝謝。我實際上需要將這些文件存儲在不同的目錄中,因爲它們是不同類型的,我需要在應用程序啓動時對它們進行迭代。 –

相關問題