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。
至于第二个问题,isSelected
是Bond
类型,是的,它没有next
方法。用于绑定信号。
你应该这样做:
self.myButton.isSelected = false
我正在尝试将我的项目迁移到 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。
至于第二个问题,isSelected
是Bond
类型,是的,它没有next
方法。用于绑定信号。
你应该这样做:
self.myButton.isSelected = false