繁体   English   中英

可观察 <String?> 只在第一次运行

[英]Observable<String?> runs only first time

我的结构

internal struct KeychainManager {    
    static private(set) var accessToken: String? = nil
}

我的用户界面绑定代码,

override func viewDidLoad() {
    super.viewDidLoad()

    let observableToken = Observable.just(KeychainManager.accessToken)

    observableToken
        .debug()
        .map { $0 == nil }
        .bind(to: authenticateButton.rx.isEnabled)
        .disposed(by: disposeBag)
}

当我打开应用程序时,可以看到authenticateButton已启用,但是当我进行API调用时,在将令牌成功保存到KeychainManager.accessTokenauthenticateButton仍然保持启用状态。 为什么?

这是怎么了

任何建议都会有所帮助。

. just . just需要一个参数,并且将其作为.next ,然后发送.completed后右.next 这意味着.just只调用一次。 但是,您实际上需要观察accessToken值的每一次更改。 有两种方法可以实现:

  1. 通过使用通知:在更改时发布通知,并使用rx通知包装器处理更改;
  2. 通过使用*Subject任何一个。 在这种情况下,设置accessToken后,您应该手动调用subject.onNext(accessToken) (发送accessToken更改的发送事件)并在控制器中处理此subject

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM