2010-07-27 57 views
3

所以這裏的交易: 我在自定義框架的資源文件夾中有一個圖像,我用它作爲框架中類的默認值。但是,當我在與我的框架鏈接的項目中創建這些類時,他們失敗說他們找不到圖像。我猜測NSBundle的+ mainBundle不會搜索我的類的正確路徑,以便在不同項目中鏈接時查找此圖像。它是否正確?如果是這樣,我應該在哪裏尋找我的形象?我希望這是有道理的(這是非常晚),感謝您的幫助!圖片包未找到使用NSBundle

回答

2

對於應用程序,+ mainBundle將是應用程序包(例如,Foo.app)。框架是他們自己的捆綁包,您可以使用+ bundleForClass:或+ bundleWithIdentifier :.

+0

因此,使用+ bundleForClass的:,我可以調用類似的東西來 'NSImage中* defaultImage = [[一個NSBundle bundleForClass:[MyClass的類] pathForResource:@ 「默認」 ofType:@ 「PNG」 inDirectory:無];' 抓住我想要的圖像?有沒有一種方法可以做得更乾淨一點(我不喜歡使用'[MyClass class]'調用)? – Grimless 2010-07-27 14:54:21

+0

替代方案是+ bundleWithIdentifier,您可以使用您在該包的Info.plist中定義的標識符來調用該方法。 '[MyClass class]'有什麼問題?這是一個相當常見的使用模式,不應該讓你感到不舒服。 – 2010-07-27 16:59:20

+0

這並不是說它讓我感到不舒服,我只是想知道是否有替代或更常用的模式。你會推薦哪個?我的直覺告訴我使用+ bundleWithIdentifier:因爲它可以很容易地被定義,並且不依賴框架的實際內容(類或者其他)。感謝您的輸入! – Grimless 2010-07-28 00:01:55

0

這很可能是您的圖像沒有放入主包中。您可能必須直接使用NSBundle來構建圖像的路徑。內置的.app文件層次結構在圖像方面的效果如何?

+0

我不相信圖像不在框架包中。我的問題是,加載圖像的類正在使用[NSBundle mainBundle]來抓取圖像。由於此調用是由相關項目進行的,因此「主包」是應用程序包而不是框架包,因此不會搜索正確的包以查找映像。我需要找出最好的方法是始終搜索框架包以查找默認圖像。 – Grimless 2010-07-27 14:49:37