2017-03-14 7 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) 나는 다음과 같은 코드가 있습니다

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

답변

0

먼저 하나를 교체 할 수 있습니다 :

self.myButton.bnd_selected.next(false) 

그것을 변경해야합니다

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

을하지만 다음과 같은 오류를 얻을 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를 준수하지 않습니다.

두 번째 질문의 경우 isSelectedBond 유형이며 예 (next)가 아닙니다. 이것은 신호를 묶는 데 사용됩니다.

당신은 다만해야

self.myButton.isSelected = false

+0

내 응용 프로그램에 다음 내용에 대한 많은 용도가있다. 대부분은 Bool을위한 것이 아닙니다. 본드에 .next를 추가하는 데 사용할 수있는 확장 프로그램이 있습니까? –

+0

SafeSignal.just ("abc"). bind (to : textField.reactive.text)'할 수 있습니다. 정말로 원한다면 확장자로 가져올 수 있습니다. –