我有 swift 的 xcode 项目,有 3 个方案。
我有每个方案的 plist 文件,在该 plist 文件中我有字体名称、颜色和徽标名称等常量值。
假设我有3个方案
1. 香蕉
2. 橙色
3.苹果
所以我对于这些所有方案我都有 plist 文件名
1.香蕉计划
2. 橙色计划
3.苹果计划
现在我有一个名为的 swift 文件SchemeConfig
在这个文件中,我必须读取这个 plist 文件并返回常量的值。
要读取 plist 文件,我有一种方法如下
private func getConfigFile() -> [String: Any]? {
var configFileName: String = ""
#if Banana
configFileName = "BananaScheme"
#elseif Orange
configFileName = "OrangeScheme"
#elseif Apple
configFileName = "AppleScheme"
#endif
// let targetName = Bundle.main.infoDictionary?["TargetName"] as! String
if let url = Bundle.main.url(forResource: "\(configFileName)", withExtension: "plist"),
let dict = NSDictionary(contentsOf: url) as? [String:Any] {
return dict
}
return nil
}
它工作得很好,但问题是我不想检查它#if
状况
我可以得到那个吗Swift Compiler - Custome Flags
运行时的值?
像这样let targetName = Bundle.main.infoDictionary?["TargetName"] as! String
?
我到底想要的是删除#if
检查方案的条件。
private func getConfigFile() -> [String: Any]? {
var configFileName: String = ""
let schemename = //Code to get scheme name
if let url = Bundle.main.url(forResource: "\(schemename)Scheme", withExtension: "plist"),
let dict = NSDictionary(contentsOf: url) as? [String:Any] {
return dict
}
return nil
}