【问题标题】:Validate textfield using Reactive Cocoa swift使用 Reactive Cocoa swift 验证文本字段
【发布时间】:2016-11-28 04:44:05
【问题描述】:

我正在尝试验证UITextField,如果它有超过 3 个字符,它应该返回 true,否则返回 false。我尝试使用下面的代码,但它不起作用。我做错了什么?

 let validUserNameSignal = self.nameTextField.reactive.trigger(for: .valueChanged).observeValues {
        value in


    }.map { (value) in

        String(describing: value).characters.count > 3 ? true:false

    }
    print("user name valid result is \(validUserNameSignal)")

【问题讨论】:

    标签: ios swift reactive-cocoa reactive-cocoa-5


    【解决方案1】:

    这是代码的外观。

    let validUserNameSignal =
            self.nameTextField
                .reactive
                .continuousTextValues
                .skipNil()
                .map { $0.characters.count > 3 }
    
    validUserNameSignal.observeValues { value in
        print("user name valid result is \(value)")
    }
    

    【讨论】:

    • 效果很好。当我结合 2 个信号时,它返回元组。 let validUserNameSignal = self.nameTextField .reactive .continuousTextValues .skipNil() .map({ $0.characters.count > 3 } ) let pwdPasswordFieldSignal = self.pwdtextField.reactive.continuousTextValues.skipNil().map( {$0.characters.count > 3}) let formValidation = validUserNameSignal.combineLatest(with: pwdPasswordFieldSignal) formValidation.observeValues { value in print(\(value)") }可以吗?
    • 是的,当你结合两个信号时会发生这种情况。
    • 那么,我应该测试所有的元组值以确定结果吗?或者还有其他方法吗?
    • 还有另一种方法,但如果您提出一个新问题,我可以更彻底地回答,我无法在这些 cmets 中格式化我的代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-01
    • 2013-09-11
    • 1970-01-01
    相关资源
    最近更新 更多