2017-03-12 1 views
0

"signingIn : Observable"으로 변환 할 수 없습니다. 내가 APIRxSwift : '(_, _, Bool) -> Bool'의 값을 예상 인수 유형 '(_, _, _) -> _'

let validatedUsername: Observable<Bool> 
let validatedPassword: Observable<Bool> 
var signingIn : Observable<Bool> // Is signing process in progress 
let signupEnabled: Observable<Bool> //Is signup button enabled 

validatedUsername = input.username 
     .map { username in 
      return username.characters.count > 5 
     } 
     .shareReplay(1) 

validatedPassword = input.password 
     .map { password in 
      return password.characters.count > 5 
     } 
     .shareReplay(1) 

signupEnabled = Observable.combineLatest(
     validatedUsername, 
     validatedPassword, 
     signingIn.asObservable() 
    ) { username, password , signing in //the error at this line 

     username.isValid && 
      password.isValid && 
      !signing 
     } 
     .distinctUntilChanged() 
     .shareReplay(1) 
} 

답변

0

의 응답을 얻기 전에 validatedUsernamevalidatedPassword 수표를 입력하지 않습니다 아마 username.isValidpassword를 호출 입력 Observable<Bool>의 양 때문에 다시 버튼을 클릭하여 사용자를 방지 할 수 있습니다.

컴파일러가 반환 형식을 추론 할 수 없기 때문에 오류가 위의 줄에서 끝나고 이전에 뭔가를 버립니다. combineLatest에 전달 된 클로저의 매개 변수와 반환 유형을 입력하여 더 나은 오류 메시지가 표시되는지 확인할 수 있습니다.

Observable.combineLatest(
     validatedUsername, 
     validatedPassword, 
     signingIn.asObservable() 
    ) { (username: Bool, password: Bool, signing: Bool) -> Bool in  
    return username.isValid && password.isValid && !signing 
} 

지금 밖으로 던져 오류는 더 분명해야하고이 수정 아마 .isValid 전화

귀하의 답변에 대한 tomahh
return username && password && !signing 
+0

감사를 제거하는 것만 큼 간단합니다! – Marian

관련 문제