大前端开发

一个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];

至此,问题解决。

上一篇下一篇

猜你喜欢

热点阅读