2011-06-07 64 views
37

訪問文件我有一個文件paylines.txt添加到名爲TextFiles的文件夾中,該文件夾駐留在iOS項目的Xcode中的Resources文件夾中。使用[NSBundle mainBundle] pathForResource:ofType:inDirectory:

這是我用來訪問文件的代碼:

NSString* filePath = [[NSBundle mainBundle] pathForResource:@"paylines" ofType:@"txt" inDirectory:@"TextFiles"]; 
NSLog(@"\n\nthe string %@",filePath); 

代碼打印:

2011-06-07 14:47:16.251 slots2[708:207] 

the string (null) 

回答

8

好吧,我發現了錯誤,我犯下我是加入了集團的項目,而不是增加實際目錄更instructions

+1

是的,就像在鏈接中說的那樣:在彈出窗口中,確保選擇「爲所有添加的文件夾創建文件夾參考」而不是「爲任何添加的文件夾創建組」 – AlvaroSantisteban 2013-01-10 14:42:35

161

我也有同樣的問題。 我找到了解決辦法是(在Xcode 4.x版):

轉到:目標 - >「構建階段」 - >「複製包資源」 那麼這裏添加特定文件。 如果該文件已添加,請將其刪除並重新添加。

清理項目並運行。有用。 :)

+1

對我來說,文件在那裏,所以我刪除它,並再次添加它,清理和它的工作! – 2011-10-31 19:33:30

+0

在我的情況下,不知何故,我的應用程序的「添加到目標」複選框未被選中;直到我刪除文件然後再次添加它才意識到它。哎呀! – geerlingguy 2012-03-27 15:28:58

+2

強調來自他人的評論和其他類似的答案:有時候你這樣做是正確的,但它仍然行不通。如果是這樣,一定要從該項目窗格(BuildPhases/Bundle Resources)中的包中刪除該文件,然後重新添加它。然後Project> Clean。那終於爲我工作了! – 2014-05-08 20:48:08

8

試試這個,它爲我工作。

NSString *str=[[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"paylines.txt"]; 

對於模擬器

NSURL *rtfUrl = [[NSBundle mainBundle] URLForResource:@"paylines" withExtension:@".txt"]; 
1

轉到「目標」 - >「構建階段」,選擇目標,選擇「構建階段」選項卡,單擊「添加構建階段」,然後選擇「添加複製文件「。將目標更改爲「產品目錄」。將您的文件拖到「添加文件」部分。

+0

如果您還可以告訴我我做了什麼從複製文件列表中刪除此文件,我將不勝感激 – 2014-03-16 15:18:18

0

選擇項目/特定文件夾 - >右鍵單擊 - >將文件添加到項目 - >選擇您要添加的文件。

這對我有效。

1

在Mac OSX的情況下,

轉到目標 - >構建階段 點擊+複製新的文件建立階段 選擇產品目錄,並刪除文件存在。

清理並運行該項目。

10

當我拖入文件時,默認情況下,「添加到目標」框似乎不勾選。如果我不打勾,那麼我遇到了所描述的問題。通過刪除文件然後將其拖回來確定它,但請確保勾選「添加到目標」。 enter image description here

2

您需要做的就是確保選中下面顯示的複選框。

enter image description here

1

以下@Neelam維爾馬的答案,或者@的Dawid的答案,它具有相同的最終結果@Neelam維爾馬的回答後,區別是@的Dawid的回答開始與拖放文件的下降到Xcode中項目和@Neelam Verma的答案從一個已經是Xcode項目一部分的文件開始,我仍然無法獲得NSBundle.mainBundle().pathForResource("file-title", ofType:"type")來查找我的視頻文件。

我想也許是因爲我有我的文件是在嵌套在Xcode項目中的組中,這是原因,所以我將視頻文件移動到我的Xcode項目的根目錄,仍然沒有運氣,這是我的代碼:

guard let path = NSBundle.mainBundle().pathForResource("testVid1", ofType:"mp4") else { 
     print("Invalid video path") 
     return 
    } 

原來,這是我的文件的名稱:testVid1.MP4,視頻文件重命名爲testVid1.mp4固定我的問題,所以,至少ofType字符串參數是區分大小寫的。

相關問題