0

所以我试图将此可变属性绑定到字符串信号。

func bindViewModel() {
    let stringProp = MutableProperty<String>("")
    let (stringSignal, stringSink) = Signal<String, NoError>.pipe()

    stringProp <~ stringSignal
}

我的理解是类型与此函数签名匹配:

func <~<P : MutablePropertyType>(property: P, signal: ReactiveCocoa.Signal<P.Value, ReactiveCocoa.NoError>) -> Disposable

然而编译器似乎对使用哪个运算符感到困惑并打印出这个错误:

error: ambiguous operator declarations found for operator
        stringProp <~ stringSignal
                   ^

在我看来,这些类型似乎是检查出来的,但不是根据编译器......知道如何解决这个绑定吗?

4

1 回答 1

0

看来编译器无法区分 ReactiveCocoa.<~ 和

infix operator <~ {}
public func <~ (rac: RAC, signal: RACSignal) {
    rac.assignSignal(signal)
}

由 Colin Eberhardt 创建。

我还不确定如何解决它。论点完全不同......

- - 编辑 - -

infix operator <~ {
associativity right
precedence 93
}
public func <~ (rac: RAC, signal: RACSignal) {
    rac.assignSignal(signal)
}

似乎 Ash Furrow 已经解决了这个问题。在 GitHub 搜索中找到了这个。

显然将两个运算符设置为相同的优先级会迫使编译器选择正确的函数。

于 2015-09-15T20:08:40.503 回答