在主项目中创建使用 .plist 的 Cocoapod
Create Cocoapod that uses a .plist in main project
我正在写一个 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"]!
等等。
然而,在构建我的应用程序并尝试调用需要配置的值时,我得到了
Thread 1: Fatal error: Unexpectedly found nil while unwrapping an
Optional value
我认为它找不到文件。
我是否应该做一些额外的事情让我的 pod 从安装应用程序中的 .plist
读取?
我尝试创建一个自定义 .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
文件格式是否正确以及它是否包含在主应用程序目标中
我正在写一个 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"]!
等等。
然而,在构建我的应用程序并尝试调用需要配置的值时,我得到了
Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value
我认为它找不到文件。
我是否应该做一些额外的事情让我的 pod 从安装应用程序中的 .plist
读取?
我尝试创建一个自定义 .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
文件格式是否正确以及它是否包含在主应用程序目标中