RxSwift:无法将类型“(_, _, Bool) -> Bool”的值转换为预期的参数类型“(_, _, _) -> _”
RxSwift :Cannot convert value of type '(_, _, Bool) -> Bool' to expected argument type '(_, _, _) -> _'
"signingIn : Observable " 用于进度条,防止用户在我收到 API
的响应之前再次单击按钮
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)
}
因为 validatedUsername
和 validatedPassword
都是 Observable<Bool>
类型,所以在 username
和 password
上调用 .isValid
可能不会输入检查。
错误在上面一行结束,因为编译器无法推断出 return 类型并更早地抛出一些东西。您可以尝试通过输入传递给 combineLatest
.
的参数和 return 类型的闭包来检查您是否得到更好的错误消息
Observable.combineLatest(
validatedUsername,
validatedPassword,
signingIn.asObservable()
) { (username: Bool, password: Bool, signing: Bool) -> Bool in
return username.isValid && password.isValid && !signing
}
现在抛出的错误应该更明显,这个修复可能就像删除 .isValid
调用一样简单
return username && password && !signing
"signingIn : Observable " 用于进度条,防止用户在我收到 API
的响应之前再次单击按钮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)
}
因为 validatedUsername
和 validatedPassword
都是 Observable<Bool>
类型,所以在 username
和 password
上调用 .isValid
可能不会输入检查。
错误在上面一行结束,因为编译器无法推断出 return 类型并更早地抛出一些东西。您可以尝试通过输入传递给 combineLatest
.
Observable.combineLatest(
validatedUsername,
validatedPassword,
signingIn.asObservable()
) { (username: Bool, password: Bool, signing: Bool) -> Bool in
return username.isValid && password.isValid && !signing
}
现在抛出的错误应该更明显,这个修复可能就像删除 .isValid
调用一样简单
return username && password && !signing