完整项目包装成framework 2

2020-09-15  本文已影响0人  山已几孑

上面已经把响应的配置文件修改完成了,运行过程中又出现了其他的问题,

坑2,NSBundle.mainBundle

补充:这里的framework是动态库(dynamicLibrary)

资源文件引用

因为之前的项目,现在变成了framework,那么NSBundle.mainBundle就变了,而资源文件的查找通常是以 NSBundle.mainBundle的形式进行查找,因此~
而当前framework的资源则被封装成为了一个bundle:[NSBundle bundleWithIdentifier:@"com.rmwjy.SubProjectOutLet"];

+(UIImage *)frameworkImageNamed:(NSString *)imageName {
    NSBundle * bundle = [NSBundle bundleWithIdentifier:@"com.rmwjy.SubProjectOutLet"];
    UIImage * image = [UIImage imageNamed:imageName inBundle:bundle compatibleWithTraitCollection:nil];
    return image;
}
- (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    NSBundle * bundle = [NSBundle bundleWithIdentifier:@"com.rmwjy.SubProjectOutLet"];
    self = [super initWithNibName:NSStringFromClass(self.class) bundle:bundle];
    return self;
}

这里目前是每个使用了Xib的VC都加上这个方法,后期应该是可以使用一个BaseVC来进行统一修改。

//cell 注册
[self.tableView registerNib:[UINib nibWithNibName:@"TableViewCell" bundle:[Utility frameworkBundle]] forCellReuseIdentifier:CellNibIdentifier];
// view创建
HeaderView* headerView = [[Utility frameworkBundle] loadNibNamed:@"HeaderView" owner:nil options:nil ].lastObject;

项目引用的其他文件

使用时,需要修改bundle

    NSString *cerPath = [[Utility frameworkBundle] pathForResource:@"mmsp.test.abchina.com 1.cer" ofType:nil]; //证书的路径

如下:


其他文件

国际化语音文件,

使用的方法在下面,他用的也是NSBundle.mainBundle,这里因为文件很少,我决定直接把他放到主工程中,这样NSBundle.mainBundle就能拿到主工程下的语言文件(framework不是目的,只是过程

        [NSBundle.mainBundle localizedStringForKey:(key) value:@"" table:(tbl)]

项目缓存,项目中还存在一些使用了项目的文件目录的地方,如Document,temp,UserDefault等,这些文件路径的使用不需要更改NSBundle.mainBundle, 让他们随风去。

上一篇下一篇

猜你喜欢

热点阅读