ReactiveKit 从 v4.x 迁移到 v5.x

ReactiveKit migration from v4.x to v5.x

我正在尝试将我的项目迁移到 Swift 3。 我正在使用 ReactiveKit 和 Bond,我正在努力进行一些转换。

1) 我的大部分扩展以前都是这样的:

extension UIView {

public var bnd_superview: Observable<UIView?> {
    return bnd_associatedObservableForValueForKey("superview")
}

我找不到 bnd_associatedObservableForValueForKey 更改的内容。

2) 我有以下代码:

self.myButton.bnd_selected.next(false)

应该改为:

self.myButton.reactive.isSelected.next(false)

但我收到以下错误:

Value of type 'Bond' has no member 'next'

第一个可以替换为Bond类型。您也可以将其作为 ReactiveExtensions 扩展而不是 UIView 扩展,这样您就可以获得 .reactive 前缀。

extension ReactiveExtensions where Base: UIView {

    public var superview: Bond<UIView?> {
        return bond { view, superview in
            view.superview = superview
        }
    }
}

然后您可以将信号绑定到您的债券。

let view: SafeSignal<UIView> = ...
view.bind(to: someView.reactive.superview)

但是键是无法观察到的,就像没有办法观察到一样UIView.superview。 KVO 可能有效,但 UIKit 不兼容 KVO。

至于第二个问题,isSelectedBond类型,是的,它没有next方法。用于绑定信号。

你应该这样做:

self.myButton.isSelected = false