我正在尝试将我的项目迁移到Swift 3,我使用的是ReactiveKit和邦德,我正在努力实现一些转换。
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)但我得到了以下错误:
类型'Bond‘的值没有成员'next’
发布于 2017-03-14 12:04:10
第一种可以用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
https://stackoverflow.com/questions/42784508
复制相似问题