美文网首页APP设计模式CocoaPods
iOS CocoaPods库添加.plist文件

iOS CocoaPods库添加.plist文件

作者: jsone | 来源:发表于2020-04-07 11:38 被阅读0次

    一、简介

    最近在研究组件化开发中封装私有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后,直接获取资源文件。

    相关文章

      网友评论

        本文标题:iOS CocoaPods库添加.plist文件

        本文链接:https://www.haomeiwen.com/subject/eudgphtx.html