【发布时间】:2019-06-08 05:42:50
【问题描述】:
我正在尝试存储一个 API 响应数据,该数据将被其他网络请求使用,在我的情况下,一个访问令牌将包含在任何后续 API 调用的标头中。我不需要需要永久存储它(这被认为是 UserDefaults、Keychain、CoreData 等。没有必要)因为登录时会提供一个新的。
如何存储令牌以便其他 ViewModel 可以访问它并在进行服务调用时将其作为参数传递?如果我的理解有误,请纠正我。
型号
// Response data object
struct Login: Codable {
let accessToken: String
let type: String
}
视图模型
// Call login service upon button tap
let loginOutput = loginTapped
.filter { username, password in
username.count >= 4 && password.count >= 4
}
.flatMapLatest { username, password in
PostLoginService.build(User(username: username,
password: password))
.materialize()
}
.share()
let loginSuccess = loginOutput
.elements() // Return Observable<Login>
视图控制器
// Subscribe to response output
viewModel.output.loginSuccess
.subscribe(onNext: { [weak self] response in
// Question:
// Call a method in ViewModel to store the response?
// How do I store this response object?
// Store in Model's Login struct?
})
.disposed(by: disposeBag)
【问题讨论】:
标签: ios swift mvvm model rx-swift