저는 RxSwift
을 처음 사용하고 다음을 달성하고자합니다. 나는 email and password TextField
입니다. textfields
에 텍스트를 입력하면 버튼이 활성화되어 있어야합니다. 내의 ViewController에서RxSwift 로직이 활성화 된 버튼
나는 다음을 수행 : 어떤 이유로 내 viewmodel
완료 결코 극복의 init
방법
import Foundation
import RxSwift
import RxCocoa
class LoginViewModel {
let email = Variable<String?>("")
let password = Variable<String?>("")
var buttonEnabled: Observable<Bool>
init() {
var processedEmail: Observable<String>!
var processedPassword: Observable<String>!
processedEmail = email.asObservable().map(String.toLower as! (String?) -> String).map(String.trimWhiteSpace as! (String?) -> String)
processedPassword = password.asObservable().map(String.toLower as! (String?) -> String).map(String.trimWhiteSpace as! (String?) -> String)
let emailValid = processedEmail.asObservable().map(String.isNotEmpty)
let passwordValid = processedPassword.asObservable().map(String.isNotEmpty)
buttonEnabled = Observable.combineLatest(emailValid, passwordValid) {
return $0 && $1
}
}
func didTapLoginButton() {
print("hello \(email.value)")
}
}
: 여기
txtEmail.rx.text.asObservable()
.bindTo(viewModel.email)
.addDisposableTo(disposeBag)
txtPassword.rx.text.asObservable()
.bindTo(viewModel.password)
.addDisposableTo(disposeBag)
viewModel.buttonEnabled
.bindTo(btnLogin.rx.isEnabled)
.addDisposableTo(disposeBag)
을 그리고 나의 뷰 모델이다. 누군가 나를 도울 수 있습니까?
당신은 무엇을 의미합니까 "결코 끝나지 않았다"? – tomahh
@tomahh init 메소드에서 EXC_BAD_INSTRUCTION을 얻습니다. – Steaphann
'toLower'와'trimWhiteSpace'는 실제로'(String?) -> String' 타입을 가지고 있습니까? 그게 충돌을 일으킬 수있는 유일한 줄이야. – tomahh