Xcode插件加载资源
问题描述:
我正在为使用Xcode 7.3的OSX编写屏幕保护程序。这个屏幕保护程序会显示一个球在屏幕上跳动的图像。但是,我目前无法从软件包中加载图像。Xcode插件加载资源
这就是我如何在ScreenSaverView中加载图像:NSImage *img = [NSImage imageNamed:"ball.png"];
和img
原来是零。
该图像被明确添加到该包中:它被添加到“复制包资源”的屏幕保护程序目标;它在Ball.saver/Contents/Resources
。
我试图用[[NSBundle mainBundle] resourcePath]
打印出资源路径,它打印出系统偏好设置/Applications/System Preferences.app/Contents/Resources
的路径,这是可以理解的,因为屏幕保护程序只是一个系统插件。我的问题是,如何从屏幕保护程序的包中加载资源?
答
原来,对于插件,您必须找到插件的特定包,而不是仅使用默认包,这似乎是主应用程序的包。这是最终的解决方案:
NSBundle *bundle = [NSBundle bundleWithIdentifier:bundleId]
NSString *filePath = [bundle pathForResource:imageName ofType:imageType];
NSImage *image = [[NSImage alloc] initWithContentsOfFile:filePath];