Eメールの形式のバリデーションをSwift2では以下のように書いていた。
let emailRegEx = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,20}"
let emailValid = emailTextField.rx_text
.map() { text in
return NSPredicate(format:"SELF MATCHES %@", emailRegEx).evaluateWithObject(text)
}.shareReplay(1)
rx_text
プロパティがオブザーバーでそれでTextFieldのテキストをサブスクリプトしていた。
Swit3からこんな風に変更する必要がある。
let emailRegEx = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,20}"
let emailValid = emailTextField.rx.text.orEmpty
.throttle(0.3, scheduler: MainScheduler.instance)
.map({ text in
return NSPredicate(format:"SELF MATCHES %@", emailRegEx).evaluate(with: text)
}).shareReplay(1)
rx
プロパティが追加された。rx.text
のように使う。
orEmpty
が追加された。空文字やnilはオブザーブしないらしい。
throttle
が追加された。時間を指定するとそれ以下の入力をオブザーブしないでくれるらしい。
いろいろ変わったなー