2010-07-27 59 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