SwiftUI @Observable не отслеживает изменения в свойствах родительского класса для обновления представления.IOS

Программируем под IOS
Ответить
Anonymous
 SwiftUI @Observable не отслеживает изменения в свойствах родительского класса для обновления представления.

Сообщение Anonymous »

Это данные модели

Код: Выделить всё

class A {
var p: Int = 1

func update() {
self.p = self.p + 1
}
}

@Observable
class BStore: A {
// nothing
}
Это вид

Код: Выделить всё

struct ContentView: View {
@State private var bStore = BStore()

var body: some View {
CountView()
.environment(bStore)
}
}

struct CountView: View {
@Environment(BStore.self) private var bStore

var body: some View {
Text("count: \(bStore.p)")
.onTapGesture(perform: {
bStore.update()
})
}
}

Код: Выделить всё

bStore.p
изменяется правильно, но представление не обновляется; если класс A добавит @Observable, представление будет обновляться нормально
У меня 2 вопроса:
  • При текущем дизайне и классе A не используется @Observable, как правильно обновить представление? Если нет, то как его спроектировать? Предпосылка заключается в том, что класс A не может использовать @Observable, поскольку класс A не только обслуживает представление, класс @Observable BStore эквивалентен агенту класса A, обслуживающем только представления
  • наследует класс A и имеет все его свойства и методы и использует @Observable, но почему свойства родительского класса bStore не отслеживаются на предмет изменений, в результате чего представление не изменяется?


Подробнее здесь: https://stackoverflow.com/questions/779 ... -to-update
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»