但是,当我的框架添加到另一个应用程序时,我无法加载nib文件,我收到以下错误:
Terminating app due to uncaught exception 'NSInternalinconsistencyException',reason: 'Could not load NIB in bundle: 'NSBundle </private/var/mobile/Containers/Bundle/Application/89B7C8F1-698A-4E0B-AD8F-4DB414A6001B/Sample.app> (loaded)' with name 'MyNibname''
我已经尝试了几个解决方案,一些概述了here.我仍然无法解决这个问题.
我看到很多对this popular project的引用,现在不支持,因为xcode具有内置的功能.我应该用这个吗?
在我的框架目标中,我将xib文件包含在“复制Bundle资源”构建阶段,并且我在构建的框架目录中看到它们,但是我注意到生成的框架的结构不符合apple’s documentation中概述的结构.甚至当我更改框架结构(使用版本并将header和Resources文件夹链接到当前版本)时,我仍然无法解决问题.
我尝试以下列方式加载笔尖:
1通过框架名称加载bundle,在这种情况下,bundle为零
Nsstring *resourceBundlePath = [[NSBundle mainBundle] pathForResource:@"myframework" ofType:@"framework"];resourcesBundle = [NSBundle bundleWithPath:resourceBundlePath];self = [super initWithNibname:@"MyNibname" bundle:resourcesBundle];
2创建资源包并将其添加到框架中.也没有请注意,如果我将该包单独添加到项目中,则该解决方案将起作用,但会破坏该框架的目的.
Nsstring *resourceBundlePath = [[NSBundle mainBundle] pathForResource:@"resources" ofType:@"bundle"];resourcesBundle = [NSBundle bundleWithPath:resourceBundlePath];self = [super initWithNibname:@"MyNibname" bundle:resourcesBundle];
3按类加载bundle,仍然没有工作,但是它返回与[NSBundle mainBundle]中相同的应用程序包. FrameworkClass是嵌入在框架中的任何类.
NSBundle* bundle = [NSBundle bundleForClass:[FrameWorkClass class]];
4用[NSBundle mainBundle]装载主包,它不应该和不应该工作.
我认为正在发生的事情是框架的资源没有被包含在最终的应用程序中.
我失踪了什么有没有人能够使用xcode中的默认静态框架模板来制作一个包含nib文件的框架?
解决方法 这应该加载你的包.Nsstring* const frameworkBundleID = @"com.framework.bundleID";NSBundle* bundle = [NSBundle bundleWithIDentifIEr:frameworkBundleID];总结
以上是内存溢出为你收集整理的“无法从iOS静态框架中加载NIB”全部内容,希望文章能够帮你解决“无法从iOS静态框架中加载NIB”所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)