Ответ
В SwiftUI Environment — это механизм для сквозной передачи зависимостей. Для конфигурации сред (dev/staging/prod) его используют через кастомные EnvironmentKey или внедрение observable-объекта.
Практический пример с EnvironmentObject:
-
Модель конфигурации:
class AppConfig: ObservableObject { @Published var environment: AppEnvironment = .production var apiBaseURL: URL { switch environment { case .development: return URL(string: "https://dev.api.com")! case .staging: return URL(string: "https://staging.api.com")! case .production: return URL(string: "https://api.com")! } } } enum AppEnvironment { case development, staging, production } -
Внедрение в корень приложения:
@main struct MyApp: App { @StateObject private var config = AppConfig() var body: some Scene { WindowGroup { ContentView() .environmentObject(config) // Теперь доступно во всей иерархии } } } -
Использование во View:
struct NetworkView: View { @EnvironmentObject var config: AppConfig var body: some View { Text("API: (config.apiBaseURL.host ?? "")") } }
Преимущества: Чистое разделение конфигурации, лёгкое переключение сред для тестирования, централизованное управление.