反应可可中的形式验证

时间:2016-11-28 07:06:49

标签: swift reactive-cocoa-5

我正在尝试验证具有多个文本字段的表单。但我只能在编辑两个文本字段时观察......

let validUserNameSignal =
    self.nameTextField
        .reactive
        .continuousTextValues
        .skipNil()
        .map({ $0.characters.count > 3 })

let pwdPasswordFieldSignal = 
    self.lastnameTextField.reactive
        .continuousTextValues
        .skipNil()
        .map({$0.characters.count > 3})

let formValidation =  validUserNameSignal.combineLatest(with: pwdPasswordFieldSignal)

formValidation.observeValues { (userNameResult,pwdResult) in
    print(userNameResult)
    print(pwdResult)
}

我的表现方式还是其他方式吗?

2 个答案:

答案 0 :(得分:1)

这是一个基本ViewController的示例实现,我已经清理了一些我认为可以做得更好的事情。

path = "sftp://user:p@ssw0rd@test.com/path/to/file.txt"

# Read a file
with open_sftp(path) as f:
    s = f.read() 
print s

# Write to a file
with open_sftp(path, mode='w') as f:
    f.write("Some content.") 

答案 1 :(得分:0)

continuousTextValuesSignal,具有热语义。这意味着它只发出观察后发生的变化。

您可能希望将formValidation信号转换为生产者,并为默认值添加前缀。

SignalProducer(signal: formValidation)
    .map { $0 && $1 }
    .prefix(value: false)
    .startWithValues { ... }