iOS CocoaPods库添加.plist文件
一、简介
最近在研究组件化开发中封装私有CocoaPods
库,其中有一个自己封装的切换主题的库需要添加.plist
文件,于是躺坑的故事就这样开始了
二、故事情节
1、尝试了将.plist
文件包含在源码文件夹Classes
中,当作源码文件包含到项目中,过程中获取.plist
文件,和运行项目都正常,但是验证Pod
库pod lib lint
这一步就报错了
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
的值,在访达中前往输入并前往
我们可以发现在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
的值,在访达中前往输入并前往
我们可以发现在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
后,直接获取资源文件。