APP设计模式CocoaPods

iOS CocoaPods库添加.plist文件

2020-04-07  本文已影响0人  jsone

一、简介

最近在研究组件化开发中封装私有CocoaPods库,其中有一个自己封装的切换主题的库需要添加.plist文件,于是躺坑的故事就这样开始了

二、故事情节

1、尝试了将.plist文件包含在源码文件夹Classes中,当作源码文件包含到项目中,过程中获取.plist文件,和运行项目都正常,但是验证Podpod lib lint这一步就报错了

验证Pod库报错

2、考虑了一下.plist文件应该算资源文件,于是就跟bundle文件一样当作资源文件处理
1)在.podspec文件中添加字段

s.resources = "YDTheme/Assets/Themes.plist"
.plist文件在项目中的存放位置

2)在项目中获取.plist文件

NSString *filePath = [[NSBundle bundleForClass:[YDThemeManager class]] pathForResource:@"Themes" ofType:@"plist"];
NSDictionary *dictionary = [NSDictionary dictionaryWithContentsOfFile:filePath];

3)运行测试测试工程,打印filePath的值,复制filePath的值,在访达中前往输入并前往

.plist文件当作资源文件处理

我们可以发现在YDTheme.framework框架下就放着.plist文件,可以直接获取。

3、还有另外一种方法是像图片文件一样存放在bundle文件中
1)在.podspec文件中添加字段

s.resource_bundles = {
      'YDTheme' => ['YDTheme/Assets/*.{png,plist}']
}
.plist文件在项目中的存放位置

2)在项目中获取.plist文件

NSString *path = [[NSBundle bundleForClass:[YDThemeManager class]] pathForResource:@"YDTheme" ofType:@"bundle"];
        NSString *filePath = [[NSBundle mainBundle] pathForResource:@"Themes" ofType:@"plist"];
NSDictionary *dictionary = [NSDictionary dictionaryWithContentsOfFile:filePath];

3)运行测试测试工程,打印filePath的值,复制filePath的值,在访达中前往输入并前往

.plist文件放在bundle文件里面

我们可以发现在YDTheme.framework框架下的YDTheme.plist文件不见了,多了一个YDTheme.bundle文件,其实YDTheme.plist文件就在YDTheme.bundle文件里面,所以我们获取YDTheme.plist文件需要先获取到YDTheme.bundle,然后再通过YDTheme.bundle获取YDTheme.plist文件。

三、总结:

1、.plist文件可以跟图片一样放到bundle中,也可以当作一个独立的资源文件(类似bundle)来存放;
2、CocoaPods库中代码获取资源文件,需要先获取当前类所在bundle(不是mainBundle),然后再去获取资源文件;
3、如果资源文件放到bundle里面,那么获取资源文件需要在获取当前类所在的bundle后,再获取一次bundle,然后通过bundle获取该资源文件。如果没有放到bundle里面,则可以在获取当前类所在的bundle后,直接获取资源文件。

上一篇下一篇

猜你喜欢

热点阅读