ios - 在 iOS 项目中使用 bundle 时出错/如何创建正确的 bundle ?

标签 ios xcode static-libraries

我正在尝试在 iOS 项目中包含静态库。我导入了整个静态库项目,然后将库链接到“目标依赖项”和“将二进制文件与库链接”中,如下所述:http://www.applausible.com/blog/?p=657

但是我在测试应用程序时收到此错误:

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: 'NSBundle </Users/alexis/Library/Application Support/iPhone Simulator/5.0/Applications/9811107D-0D7E-4178-ACCE-BF43E3043770/PlazappPartnerTest.app> (loaded)' with name 'LauncherView''
*** First throw call stack:
(0x188a052 ......

我猜它无法访问 .xib 文件,但由于它包含在我的库中,我不知道为什么。 如何使主项目“看到”.xib 文件? (如果这确实是问题所在...)

编辑:

我尝试制作一个包含 .xib 文件的 bundle ,并将其包含到我的主项目中,但我无法使用该 bundle 。我试过这个:

NSString *bundlePath = [[NSBundle mainBundle] pathForResource:@"BundleName" ofType:@"bundle"];
NSBundle *bundle = [NSBundle bundleWithPath:bundlePath];

NSError *error;
[bundle loadAndReturnError:&error];

NSLog(@"bundle error : %@", [error userInfo]);

我得到了这个错误:

NSLocalizedDescription = "The bundle \U201cBundleName.bundle\U201d couldn\U2019t be loaded because its executable couldn\U2019t be located.";
NSLocalizedFailureReason = "The bundle\U2019s executable couldn\U2019t be located.";
NSLocalizedRecoverySuggestion = "Try reinstalling the bundle.";

有什么问题吗?

我认为我无法加载包含 .xib 文件等非可执行资源的包。我说得对吗?

但是,如何从 bundle 中加载我的 .xib?

最佳答案

在 Cocoa 编程中,获取 bundle 的方法通常不止一种。我在这方面取得了成功:

NSBundle *libBundle = [NSBundle bundleWithURL:[[NSBundle mainBundle] URLForResource:@"BundleName" withExtension:@"bundle"]];

然后用这个加载 Nib :

MyViewController *myViewController = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:libBundle];

您对 loadAndReturnError: 进行的此特定调用会加载 bundle 的可执行代码。由于此 bundle 可能没有任何可执行代码,只有库所需的资源集合,因此它会给您带来此错误。

编辑(回复评论):

我通过向 bundle 的库项目添加新目标来制作 bundle 。从 Mac OS X bundle 模板开始,我将所有图像、.xib 和其他资源添加到“复制 bundle 资源”构建阶段。我将基础 SDK 更改为 iOS(最新)。然后,我将 bundle 添加到库的依赖项和最终应用程序的“复制 bundle 资源”构建阶段。

如果您只是尝试将 .xib 文件添加到文件夹方法,.xib 文件不会编译为 nib,iOS 无法读取它们。

关于ios - 在 iOS 项目中使用 bundle 时出错/如何创建正确的 bundle ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7977784/

相关文章:

objective-c - 在 UINavigationViewController 的 Root View 中隐藏导航栏,但在其他 View 中显示

ios - 编辑 UITableViewCell 从 CoreData 提取数据

iphone - 当用户向下滚动 UITableView,经过最后一个单元格时,为什么我的应用程序退出?

build-process - ld链接器问题: the --whole-archive option

c++ - 如何解决库间包含依赖关系?

ios - 尝试用 nsmutablearray 呈现 uitableview

android - 将大数据从服务器发送到移动应用程序的最佳实践

iphone - 为什么 UIButton 不需要分配和初始化?

ios - glClear 上的 "invalid framebuffer operation"- 在 OpenGL ES3 中使用 sRGB

c++ - 在 Visual Studio 中引用静态库项目