首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从v4.x到v5.x的ReactiveKit迁移

从v4.x到v5.x的ReactiveKit迁移
EN

Stack Overflow用户
提问于 2017-03-14 11:16:06
回答 1查看 160关注 0票数 1

我正在尝试将我的项目迁移到Swift 3,我使用的是ReactiveKit和邦德,我正在努力实现一些转换。

1)我的大多数扩展都是这样的:

代码语言:javascript
复制
extension UIView {

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

我找不到bnd_associatedObservableForValueForKey被改成了什么。

2)我有以下代码:

代码语言:javascript
复制
self.myButton.bnd_selected.next(false)

它应改为:

代码语言:javascript
复制
self.myButton.reactive.isSelected.next(false)

但我得到了以下错误:

类型'Bond‘的值没有成员'next’

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-14 12:04:10

第一种可以用Bond类型代替。您也可以将其作为ReactiveExtensions扩展来执行,而不是作为UIView扩展,因此您可以获得.reactive前缀。

代码语言:javascript
复制
extension ReactiveExtensions where Base: UIView {

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

然后你可以将一个信号绑定到你的债券上。

代码语言:javascript
复制
let view: SafeSignal<UIView> = ...
view.bind(to: someView.reactive.superview)

然而,不能观察到键,就像没有办法观察UIView.superview一样。KVO可能会工作,但是UIKit不兼容KVO。

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

你应该这么做:

self.myButton.isSelected = false

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42784508

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档