Если единственной целью является установка разных значений для разных сред - development, QA, UAT, Production
, можно использовать файлы xcconfig
.
Никакие условные операторы не требуются, но в зависимости от конфигурации они будут принимать соответствующие значения.
Необходимые шаги:
Добавить другие Схема и различные конфигурации сборки.
Добавьте файл настроек конфигурации, выбрав File-> New-> File и "Configuration Settings file"
-> Development.xcconfig, UAT.xcconfig, Production.xcconfig
et c
Добавьте настраиваемые ключи по вашему выбору в файл конфигурации и их соответствующие значения в пару «ключ-значение» как:
endpointUrl = "Production_Url"
для Production.xcconfig
endpointUrl = "UAT_Url"
для UAT.xcconfig
Добавьте соответствующие файлы plist и укажите ключи из файла .xcconfig в файл .plist. Создайте UAT.plist для файла UAT.xcconfig и аналогичный способ для других поддерживаемых конфигураций.
Задайте соответствующий путь к списку файлов для каждой конфигурации сборки в разделе
Project -> Info -> Configurations
Создайте файл .swift для чтения файла конфигурации, например:
publi c enum PlistKey {case EndpointURL
func value() -> String {
switch self {
case .EndpointURL:
return "endpointUrl"
}
} }
publi c struct Environment {
fileprivate var infoDict: [String: Any] {
get {
if let dict = Bundle.main.infoDictionary {
return dict
}else {
fatalError("Plist file not found")
}
}
}
public func configuration(_ key: PlistKey) -> String {
switch key {
case .EndpointURL:
return infoDict[PlistKey.EndpointURL.value()] as? String ?? "noValue"
}
}
}
Назовите URL как:
let server_url = Environment().configuration(PlistKey.EndpointURL)
Более подробная версия на: https://www.freecodecamp.org/news/managing-different-environments-and-configurations-for-ios-projects-7970327dd9c9/