一个iOS中framework获取资源文件失败问题的解决
2018-02-22 本文已影响177人
link_hui
问题
升级最低版本到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];
至此,问题解决。