我正在使用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
}