2012-12-10 39 views
5

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

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

回答

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

让我知道你如何继续。

+1

它不加载包。看起来,捆绑包本身位于主应用程序包内。所以我必须使用[[NSBundle mainBundle] pathForResource:@“MyBundle”ofType:@“bundle”]来获取包的路径,然后使用该路径使用bundleWithPath加载包:方法 – Sandeep

+0

但是,我添加了一个图像进入捆绑并试图使用pathForResource:ofType:方法加载图像,但方法是零,然后我浏览到模拟器应用程序文件夹,并看到图像没有被复制。 – Sandeep

+1

您可能需要在构建中添加“复制文件”阶段。 – hd1

2

尝试这样:

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

,并确保您选择这些选项当你拖着包到项目:

enter image description here

+0

我通过将目标添加到现有应用程序来创建捆绑包。 – Sandeep

1

对于项目,一个包,我用:

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

是什么让这个s o方便的是,当你有本地化的文件时,这为当前用户区域提供了文件的路径。这很方便,因为本地化文件不在主目录中,而是在它们自己的子文件夹中(例如,英文本地化文件位于@“en.lproj”子文件夹中),并且按名称调用它们是一件麻烦事,因为您需要完整的路径。此方法为您获取路径。