LoginSignup
12
10

More than 5 years have passed since last update.

RxSwiftでUITextFiledのtextのオブザーバーがSwift3から変わっていた

Last updated at Posted at 2017-01-04

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が追加された。時間を指定するとそれ以下の入力をオブザーブしないでくれるらしい。

いろいろ変わったなー

12
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
10