У меня есть проект xcode в swift с 3 схемами.
У меня есть plist-файлы для каждой из этих схем, в этом plist-файле у меня есть значения констант, такие как имя шрифта, цвет и название логотипа и т. Д. Предположим, у меня есть3 схемы 1. Банан 2. Апельсин 3. Apple
Так что для всех этих схем у меня есть имена файлов plist как 1. BananaScheme 2. OrangeScheme 3. AppleScheme
Теперь у меня есть один файл 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
}