我的结构,
internal struct KeychainManager {
static private(set) var accessToken: String? = nil
}
我的UI绑定代码,
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.accessToken
成功保存令牌后,authenticateButton
仍然保持启用状态。为什么呢?
这里出了什么问题?
任何建议都会有所帮助。
答案 0 :(得分:1)
. just
接受一个论点并将其作为.next
发送,然后在.completed
之后发送.next
。这意味着.just
只调用一次。但是你需要真正观察accessToken
值的每一个变化。实现这一目标的两种方法:
*Subject
中的任何一个。在这种情况下,在accessToken
设置后,您应手动调用subject.onNext(accessToken)
(发送accessToken
已更改的事件)并在您的控制器中处理此subject
。