SwiftUI State PropertyWrapper Поведение - PullRequest
0 голосов
/ 22 октября 2019

Я сформулировал предыдущий вопрос по теме, связанной с этим, но более конкретно сейчас: мне любопытно поведение @State переменной внутри замыкания, очевидно из того, что я тестировал, переменная можетНе обновляйтесь, я просмотрел несколько статей, но не смог найти ответ. В частности, это то, с чем я имел дело:

private let disposeBag = DisposeBag()
@State var eventsView = [Event]()

func setObserver(){
    EventGroup.shared.events.asObservable()
    .subscribe(onNext: {
        [unowned self] events in
        print("Events Resp: "+String(events.count))
        self.eventsView = events
        print("Events Count: "+String(self.eventsView.count))
    })
    .disposed(by: disposeBag)
}

Результат приведенных выше отпечатков:

Events Resp: 3
Events Count: 0

Почему переменная eventsView не обновляется?

1 Ответ

1 голос
/ 23 октября 2019

Из документов Apple:

Экземпляр State не является самим значением;это средство чтения и изменения значения. Чтобы получить доступ к базовому значению состояния, используйте его свойство value.

Получите доступ к свойству состояния только внутри тела представления (или из вызываемых им функций) . По этой причине вы должны объявить свои свойства состояния как частные, чтобы клиенты вашего представления не могли получить к ним доступ.

...