2010-02-24 42 views
1

我想從WebView中的資源加載HTML文件。pathForResource inDirectory問題

在資源

我有:

的test.html

testfolder->的test.html

此代碼的工作完美:

[[webview1 mainFrame] loadRequest: 
[NSURLRequest requestWithURL: 
    [NSURL fileURLWithPath: 
    [[NSBundle mainBundle] pathForResource:@"test" ofType:@"html"]]]]; 

這一個 - 崩潰的應用程序( SIGABRT):

[[webview1 mainFrame] loadRequest: 
[NSURLRequest requestWithURL: 
    [NSURL fileURLWithPath: 
    [[NSBundle mainBundle] pathForResource:@"test" ofType:@"html" inDirectory:@"testfolder" ]]]]; 

如何從文件夾中獲取文件?

回答

8

你會了解它的正確方法,這樣就意味着要麼你有你的文件/目錄名或「testfolder」目錄中的錯別字是沒有得到包含在您的應用程序包。

確保「testfolder」是你的XCode項目的資源部分爲一個文件夾(而不是組)。

查看「生成結果」,當你建立你的應用程序窗口;您應該在那裏看到說「複製test.html」和「複製測試文件夾」的步驟。

注意(爲模擬器構建時),你也可以直接查看應用程序包的內容 - 看在庫/應用程序支持/ iPhone模擬器/用戶/應用

+0

謝謝!這種幫助。 和提示 - 該組顯示在黃色文件夾圖標的資源,與藍色文件夾圖標的文件夾。 – nukl 2010-02-24 16:43:17

1

爲NSURL fileURLWithPath文檔:說

參數

路徑

路徑的NSURLØ bject將代表。路徑應該是有效的 系統路徑。如果路徑始於 代字號,則必須首先使用 stringByExpandingTildeInPath進行擴展。

此參數傳遞零產生一個例外。

和一個NSBundle pathForResource:ofType:inDirectory:

返回值

的完整路徑爲資源 文件或零如果文件不能被 定位。

難道是文件不在您指定的目錄路徑中嗎?

0

您的代碼看起來正確。
你確定你的文件夾 testfolder被包含在構建?

如果不是,則您對pathForResource:ofType:inDirectory:的調用將返回nil。 並根據documentation of the NSURL class,傳遞給fileURLWithPath:class方法的參數nil產生一個異常。

要檢查您的文件夾是否包含在您的構建過程中,請展開「複製包資源」構建階段並查找您的文件夾。如果它不存在,請將其拖放到其中。

檢查您是否正確添加它的一種方法是導航到您的構建應用程序,右鍵單擊它並選擇「顯示包裝內容」項目。

0
  1. 如果你想從一個目錄中加載,你首先得添加目錄項目與創建目錄引用(這樣在複製包資源你與主文件夾名稱和不是藍色圖標個別文件!)

  2. 根本不要使用in目錄參數。只需在Windows中使用帶斜槓(「/」)的全局路徑而不是反斜槓(「\」)即可。

1

在XCode中創建「組」不會在應用程序包中創建真實的目錄。

您需要使用下面的方法在您的項目「測試」導入目錄到您的應用程序:

  1. 文件 - >選擇「添加文件,以測試」
  2. 選擇要導入的目錄
  3. 在彈出的窗口中請務必選擇「複製項目到目的地組的文件夾」和「創建任何附加文件夾,文件夾引用」

命中「添加」

你完成了!

該目錄應顯示爲藍色而不是黃色。