Rx Swift:复杂的TextFields验证

CZ54

我是新手,RxSwift发现的所有示例都在处理简单案例。

我正在尝试对我的文本字段进行表单验证。我的自定义TextField类具有一个方法isValid()和一个regexpisValid收益是基于regexp属性。

到目前为止,我已经写了以下内容:

let valids = [mLastName, mFirstName, mEmailField].map {
    $0.rx.text.map {
        text -> Bool in
        // I want more complex logic here
        // Like return field.isValid()
        return text!.characters.count > 0
    }
}    

let _ = Observable.combineLatest(valids) { iterator -> Bool in
    return iterator.reduce(true, { $0 && $1 })
}.subscribe(onNext: { allValid in
    ///update button according to AllValid
})

有谁知道如何更新代码以Observable<Bool>基于我的isValid()方法而不是第一个text!.characters.count

CZ54

我自己找到了答案。问题出在第一张地图上,我不应该使用匿名参数。

见:

let valids = [mLastName, mFirstName, mEmailField].map { field in
    field.rx.text.map({ _ in return field.isValid() })
}

_ = Observable.combineLatest(valids) { iterator -> Bool in
    return iterator.reduce(true, { return $0 && $1 })
}.bindTo(self.mValidateButton.rx.isEnabled)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章