2012-12-10 56 views
5

我想將我的資源,nib文件和本地化文件分隔到一個通用的可重用捆綁包中。因此,我爲我的ios應用程序創建了一個捆綁包,並使用生成階段將指定的資源包含在捆綁包內,複製捆綁包資源。但是,現在如果我嘗試加載該包,我無法加載該包。我嘗試使用[NSBundle allBundles],數組只顯示主應用程序包。使用NSBundle加載我的資源

我也嘗試枚舉NSApplicationPath的目錄,但是唯一可用的包是我的應用程序默認包。我想學習這種技術並利用它來分離我的資源。任何幫助和建議將不勝感激。謝謝

回答

6
[NSBundle bundleWithPath:[NSString stringWithFormat:@"%@/%@", [[NSBundle mainBundle] bundlePath], pathToYourBundleWithinTheDotAppDirectory]; 

讓我知道你如何繼續。

+1

它不加載包。看起來,捆綁包本身位於主應用程序包內。所以我必須使用[[NSBundle mainBundle] pathForResource:@「MyBundle」ofType:@「bundle」]來獲取包的路徑,然後使用該路徑使用bundleWithPath加載包:方法 – Sandeep

+0

但是,我添加了一個圖像進入捆綁並試圖使用pathForResource:ofType:方法加載圖像,但方法是零,然後我瀏覽到模擬器應用程序文件夾,並看到圖像沒有被複制。 – Sandeep

+1

您可能需要在構建中添加「複製文件」階段。 – hd1

2

嘗試這樣:

NSBundle* bundle=[NSBundle bundleWithIdentifier: @"bundle name"]; 

,並確保您選擇這些選項當你拖着包到項目:

enter image description here

+0

我通過將目標添加到現有應用程序來創建捆綁包。 – Sandeep

1

對於項目,一個包,我用:

// in this example, we load test.png from the bundle 
NSString *pathToResource = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"png"]; 

是什麼讓這個s o方便的是,當你有本地化的文件時,這爲當前用戶區域提供了文件的路徑。這很方便,因爲本地化文件不在主目錄中,而是在它們自己的子文件夾中(例如,英文本地化文件位於@「en.lproj」子文件夾中),並且按名稱調用它們是一件麻煩事,因爲您需要完整的路徑。此方法爲您獲取路徑。