无法访问资源包

时间:2017-07-17 12:52:13

标签: ios objective-c xcode bundle nsbundle

我有一个包含多个目标的项目:

  • MyLib - 静态库
  • 资源 - 资源包
  • 应用程序 - 示例应用程序

现在,我要做的是从MyLib中的Resources访问资源。我在MyLib和App中的目标依赖关系复制包资源中添加了资源。在参考资料中,我已经将复制捆绑资源所需的所有文件添加到了。

但是,我无法在My Lib和App中访问Resources包。 [NSBundle bundleWithIdentifier]返回nil。在MyLib中,当我列出所有包含[NSBundle allFrameworks][NSBundle allBundles]的包时,我可以看到App包,但不能看到Resouces包。有什么帮助吗?

1 个答案:

答案 0 :(得分:1)

我找到了答案:

显然,bundleWithIdentifier不会加载捆绑包。文档似乎有点模糊:

  

如果没有与标识符关联的现有捆绑包,则此方法创建并返回新的NSBundle对象。否则,返回现有实例。

有人可能会认为你可以加载一个捆绑包,但实际情况并非如此。您需要使用bundleWithPath显式加载包,如下所示:

NSBundle *bundle = [NSBundle bundleWithPath:[NSString stringWithFormat:@"%@/%@", [[NSBundle mainBundle] bundlePath], @"Resources.bundle"]];

为我修好了。