一个iOS中framework获取资源文件失败问题的解决

问题

升级最低版本到iOS8之后遇到下面的Assert问题。path所指定的resource文件在framework中。
// if path is relative, resolve it against the main bundle
if(![path isAbsolutePath]){
NSString* absolutePath = [[NSBundle mainBundle] pathForResource:path ofType:nil];
if(!absolutePath){
NSAssert(NO, @"ERROR: %@ not found in the main bundle!", path);
}
path = absolutePath;
}

解决

1、查看framework的编译选项Copy Bundle resource


image.png

2、查看生成的app文件的目录


image.png

找不到这个xml文件
但是在framework的目录中找到了。


image.png

3、资源文件在framework中,不在mainBundle下。
在framework中读取资源文件的方法:

+ (NSBundle *)bundleForClass:(Class)aClass;

修改如下:

 NSBundle *bundle = [NSBundle bundleForClass:self.class];
 NSString* absolutePath = [bundle pathForResource:path ofType:nil];

至此,问题解决。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 仅以方便自己查阅记录前言1.静态库和动态库有什么异同?静态库:链接时完整地拷贝至可执行文件中,被多次使用就有多份冗...
    190CM阅读 4,535评论 0 4
  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi阅读 7,888评论 0 10
  • (原文:How to Create a Framework for iOS 作者:Sam Davies 译者:Mr...
    王宪岭阅读 5,073评论 3 23
  • 静态库与动态库的区别 首先来看什么是库,库(Library)说白了就是一段编译好的二进制代码,加上头文件就可以供别...
    吃瓜群众呀阅读 12,351评论 3 42
  • 长久地停滞在闹市的喧嚣中,呼吸着沥青路面腾起的尘埃,咀嚼着略带汽油风味的地方特色,我还就这样活过了人生的前二十年...
    宛阳蝶祎阅读 449评论 0 1

友情链接更多精彩内容