我正在写一个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吗?
答案 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
文件的格式是否正确以及是否包含在主应用程序目标中