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];