2017-03-14 16 views
1

私はプロジェクトをSwift 3に移行しようとしています。 ReactiveKitとBondを使用しています。私はいくつかの変換に苦労しています。ReactiveKit v4.xからv5.xへの移行

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'

答えて

0

は最初のものは交換することができますBondタイプ。 UIViewという拡張子ではなく、ReactiveExtensionsという拡張子を使用することもできます。したがって、接頭辞は.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に準拠していません。

第2の質問については、isSelectedBondタイプであり、はい、それは方法nextがありません。シグナルをバインドするために使用されます。

あなただけ行う必要があります。

self.myButton.isSelected = false

+0

私は私のアプリで.nextための多くの用途を有します。それらのほとんどはブールのものではありません。 .nextをBondに追加するために使用できる拡張機能はありますか? –

+0

あなたは 'SafeSignal.just(" abc ")。bind(to:textField.reactive.text)'を実行することができます。 –

関連する問題