【问题标题】:Having trouble binding MutableProperty<String> to a Signal<String, NoError> with RAC 3.0使用 RAC 3.0 将 MutableProperty<String> 绑定到 Signal<String, NoError> 时遇到问题
【发布时间】:2015-12-12 02:41:36
【问题描述】:

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

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
                   ^

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

【问题讨论】:

    标签: reactive-cocoa-3


    【解决方案1】:

    看来编译器无法区分 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 搜索中找到了这个。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-27
      • 1970-01-01
      • 1970-01-01
      • 2018-08-04
      • 1970-01-01
      相关资源
      最近更新 更多