创建在主项目中使用.plist的Cocoapod

时间:2019-07-23 09:40:23

标签: ios swift cocoapods info.plist

我正在写一个Cocoapod,需要从运行它的应用程序中读取一些配置值。

我希望我可以在我的应用程序项目中创建类似Config.plist的东西,并让我的Cocoapod阅读类似...的东西。

private lazy var config: [String: String] = parseConfig()

private func parseConfig() -> [String: String] {
        if let path = Bundle.main.path(forResource: "MyConfig", ofType: "plist"), let dict = NSDictionary(contentsOfFile: path) as? [String: String] {
            return dict
        }
        return [:]
    }

然后我可以在诸如self.config["clientId"]!之类的代码中引用其他值。

但是,当构建我的应用程序并尝试调用需要配置的值时,我得到了

  

线程1:致命错误:展开包装时意外发现nil   可选值

对我来说,它找不到文件。

我应该做些额外的事情来从安装应用程序中的.plist读取pod吗?

1 个答案:

答案 0 :(得分:0)

我尝试创建一个自定义.pist文件,包括进入主应用程序项目,然后从cocoapod引用它,您的代码运行良好。

myConfig.plist文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>testString</key>
    <string>Test</string>
</dict>
</plist>

cocoapod View Controller

    private lazy var config: [String: String] = parseConfig()

    private func parseConfig() -> [String: String] {
        if let path = Bundle.main.path(forResource: "myConfig", ofType: "plist"), let dict = NSDictionary(contentsOfFile: path) as? [String: String] {
            return dict
        }
        return [:]
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        print(config["testString"])
    }

输出:

Optional("Test")

检查myConfig.plist文件的格式是否正确以及是否包含在主应用程序目标中

相关问题