组合RAC信号以禁用UI控件的更好方法

时间:2015-11-08 19:13:57

标签: swift swift2 reactive-cocoa

我正在使用Swift 2.1和ReactiveCocoa 4.0.4 alpha 1.我正在尝试组合多个信号,并根据它们是否有有效输入启用按钮。下面的代码工作正常,但我想知道是否有更优雅和有效的方法来实现ReactiveCocoa API,以及这是在Swift中使用API​​的正确方法。

    let sig0 = firstTextField.rac_textSignal()
        .max(self.firstTextField, max: maxLength)
        .map{ next in
            if let str = next as? String {
                return str.characters.count > 0
            } else {
                return false
            }
    }

    let sig1 = secondTextField.rac_textSignal()
        .max(self.secondTextField, max: maxLength)
        .map{ next in
            if let str = next as? String {
                return str.characters.count > 0
            } else {
                return false
            }
    }

    let combined = RACSignal.combineLatest([sig0, sig1])
    combined.subscribeNext { (obj: AnyObject!) -> Void in
        let tup = obj as! RACTuple
        let valid = (tup.first as! Bool) && (tup.second as! Bool)
        self.button.enabled = valid
    }

0 个答案:

没有答案