【问题标题】:SwiftUI State PropertyWrapper BehaviorSwiftUI 状态 PropertyWrapper 行为
【发布时间】:2019-10-22 18:37:43
【问题描述】:

我已经就与此相关的主题制定了一个先前的问题,但现在更具体地说:我很好奇 @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变量没有更新?

【问题讨论】:

  • State 只能在函数构建器中更改。

标签: swift swiftui rx-swift


【解决方案1】:

来自 Apple 的文档:

State 实例不是值本身;这是一种读取和改变值的方法。要访问状态的基础值,请使用其 value 属性。

只能从视图主体内部(或从它调用的函数)访问状态属性。因此,您应该将您的状态属性声明为私有,以防止您的视图的客户端访问它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-05
    • 1970-01-01
    • 1970-01-01
    • 2019-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多