gpt4 book ai didi

swift - 通用函数参数给出 "Expression type is ambiguous without more context"

转载 作者:行者123 更新时间:2023-11-28 14:00:56 25 4
gpt4 key购买 nike

我有一个函数,它接受两个与 RxSwift 相关的参数并双向绑定(bind)它们。

import Foundation
import RxSwift
import RxCocoa
func bibind<T>(property: ControlProperty<T>, variable: Variable<T>) -> Disposable {

var updating = false

let bindToUIDisposable = variable.asObservable().filter({ _ in
updating = !updating
return updating
}).bind(to: property)
let bindToVariable = property.filter({ _ in
updating = !updating
return updating
}).subscribe(onNext: { n in
variable.value = n
}, onCompleted: {
bindToUIDisposable.dispose()
})

return CompositeDisposable(bindToUIDisposable, bindToVariable)
}

我试着这样调用它

bibind(property: self.userNameTextField.rx.text, variable: self.loginViewModel.userName.value )

显示编译错误

Expression type 'Variable<String>' is ambiguous without more context

View 模型是这样的

import Foundation
import RxSwift
import RxCocoa

class LoginViewModel {
var userName = Variable<String>("")
var password = Variable<String>("")

init() {
userName = Variable("")
password = Variable("")
}
}

最佳答案

类型不匹配。 userNameTextField.rx.text返回 Observable<String?>你的变量是 Observable<String> .您可以使用 orEmpty 解决此问题如 userNameTextField.rx.text.orEmpty .

通常,当您看到此错误时,表示类型不匹配,您需要通过更改其中一个对象的类型来修复它。

关于swift - 通用函数参数给出 "Expression type is ambiguous without more context",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53564878/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com