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 に答える