Добавить объявление

@ObservedObject в SwiftUI

@ObservedObject - это property wrapper, который позволяет подписываться на изменения внешнего объекта данных и автоматически обновлять View при их изменении.

Как использовать:



Создаем ObservableObject:

class Counter: ObservableObject {
@Published var value = 0
}


Передаем объект в View (через инициализатор):

struct CounterView: View {
@ObservedObject var counter: Counter

var body: some View {
Button("+1") { counter.value += 1 }
Text("Значение: \(counter.value)")
}
}


Используем в родительском View:

struct ParentView: View {
@StateObject private var counter = Counter()

var body: some View {
CounterView(counter: counter)
}
}

Ключевые особенности:


  • Автоматическое обновление: View перерисовывается при изменении @Published свойств.

  • Локальная область видимости: работает только для конкретного View, куда передан объект.

  • Гибкость: можно передавать между View как обычное свойство.


Для глобальных данных лучше использовать @EnvironmentObject.
29.06.2025 8 383