【发布时间】:2021-06-14 02:25:27
【问题描述】:
我有一个 SwiftUI 登录视图,其中包含 2 个用于用户名、密码和登录按钮的文本字段。我正在使用 MVVM 设计模式,并希望我的 viewModel 在用户单击登录按钮后进行身份验证。
视图的实现如下
struct LoginView: View {
@ObservedObject var viewModel = LoginViewModel()
var body: some View {
VStack(alignment: .leading) {
TextField("Enter e-mail address", text: $viewModel.email)
TextField("Enter password", text: $viewModel.password)
Button("Login") {
viewModel.login()
}
}
}
}
和视图模型
class LoginViewModel: ObservableObject {
@Published var email: String = ""
@Published var password: String = ""
var authenticate = PassthroughSubject<User, Never>()
var cancellables = Set<AnyCancellable>()
init() {
authenticate.sink { user in
Webservice().authenticate(username: user.username, passsword: user.password).sink { error in
//
} receiveValue: { token in
//
}.store(in: &self.cancellables)
}.store(in: &cancellables)
}
func login() {
authenticate.send(User(username: email, password: password))
}
}
一切正常,但每次用户单击登录按钮时,可取消项的数量都会增加。我想这不应该是这样的。这里有什么问题?
【问题讨论】:
-
如果答案解决了您的问题(other question 中的代码似乎就是这种情况),那么请将答案标记为接受以关闭此问题。