使用NSBundle加载我的资源

时间:2012-12-10 21:58:30

标签: objective-c ios resources nsbundle

我想将我的资源,nib文件和本地化文件分成一个通用的可重用软件包。因此,我为我的ios应用程序创建了一个包,并使用构建阶段,复制包资源指定要包含在包中的资源。但是,现在如果我尝试加载捆绑包,我无法加载捆绑包。我尝试使用[NSBundle allBundles],数组只显示主要的应用程序包。

我还尝试枚举NSApplicationPath的目录,但是唯一可用的捆绑包是我的应用程序默认捆绑包。我想学习这种技术并利用它来分离我的资源。任何帮助和建议将不胜感激。谢谢

3 个答案:

答案 0 :(得分:6)

[NSBundle bundleWithPath:[NSString stringWithFormat:@"%@/%@", [[NSBundle mainBundle] bundlePath], pathToYourBundleWithinTheDotAppDirectory];

让我知道你是怎么过的。

答案 1 :(得分:3)

尝试这样的事情:

NSBundle* bundle=[NSBundle bundleWithIdentifier: @"bundle name"];

确保在将捆绑包拖到项目中时选择了这些选项:

enter image description here

答案 2 :(得分:1)

对于有一个捆绑的项目,我使用:

// in this example, we load test.png from the bundle
NSString *pathToResource = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"png"];

这使得如此方便的原因是,当您拥有本地化文件时,这将提供当前用户区域设置的文件路径。这很方便,因为本地化文件不在主目录中,而是在它们自己的子文件夹中(例如,英文本地化文件在@“en.lproj”子文件夹中),并且按名称调用它们是一件麻烦事,因为你需要完整的道路。这个方法为你找到了路径。