Xcode插件加载资源

Xcode plugin load resources

我正在使用 Xcode 7.3 为 OSX 编写屏幕保护程序。此屏幕保护程序将显示一个球在屏幕上弹跳的图像。但是,我目前无法从捆绑包中加载图像。

这就是我在 ScreenSaverView 中加载图像的方式:NSImage *img = [NSImage imageNamed:"ball.png"];img 结果为零。

图像肯定被添加到包中:它被添加到 "Copy Bundle Resources" 用于屏幕保护程序目标;它在 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];