Карточка Middle Внедрение зависимостей обновлено

DI через Environment в SwiftUI

Вопрос

Как пробросить зависимость в глубину иерархии SwiftUI без передачи через каждый инициализатор?

Попробуйте сами

Ответьте про себя или вслух, потом откройте ответ и сверьтесь.

Показать ответ и разбор

Коротко

Объявить ключ окружения (@Entry var apiClient: APIClient = .live в extension EnvironmentValues с iOS 18 SDK, или EnvironmentKey), задать .environment(\.apiClient, client) у корня, читать @Environment(\.apiClient).

Ответ

Объявить ключ окружения (@Entry var apiClient: APIClient = .live в extension EnvironmentValues с iOS 18 SDK, или EnvironmentKey), задать .environment(\.apiClient, client) у корня, читать @Environment(\.apiClient).

Разбор

Удобно для сервисов. Состояние и view model лучше передавать явно.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.