お久しぶりです。iOSエンジニアのかっくん(@fromkk)です。
入社後コーポレートサイトをリニューアルした後は弊社の2大アプリの内の一つ Famm のリニューアルプロジェクトにアサインされました。
この度色々有りましたが無事にリリースされましたので、中で利用しているバリデーションライブラリを自作してCocoapodsに登録したので紹介します。
TMValidator
インストール方法
※前提条件
- iOSアプリのプロジェクトをObjective-Cで作成されている事
- CocoaPodsがMacにインストールされている事
インストール方法は Podfile にpod 'TMValidator'
を記述して、ターミナルからpod install
を実行します。
プロジェクトのフォルダにプロジェクト名.xcodeprojのファイルの他にプロジェクト名.xcworkspaceというファイルが出来ているかと思いますのでこちらを開いて下さい。
バリデーターを利用したいファイルの上部に #import <TMValidator/TMValidator.h>
を入力します。
これで準備完了です。一度ビルドしてみて正しくビルドが通る事を確認して下さい。
基本的な使い方
まずは TMValidator のインスタンスを作成します。
TMValidator *validator = [TMValidator validator];
次に TMValidatorField を作成します。
TMValidatorField *emailField = [TMValidatorField fieldWithValue:nil andLabel:@"メールアドレス" andElement:nil]; TMValidatorField *passwordField = [TMValidatorField fieldWithValue:nil andLabel:@"パスワード" andElement:nil];
そして TMValidatorField に TMValidatorRule を追加します。
[emailField addRules:@[ [TMValidatorRuleRequired ruleWithErrorMessage:@"メールアドレスは必須入力です"], [TMValidatorRuleEmail ruleWithErrorMessage:@"メールアドレスの形式で入力して下さい"], [TMValidatorRuleMaxLength ruleWithLength:@255 andErrorMessage:@"メールアドレスは255文字以内で入力して下さい"] ]]; [passwordField addRules:@[ [TMValidatorRuleRequired ruleWithErrorMessage:@"パスワードは必須入力です"], [TMValidatorRuleIsAlnum ruleWithErrorMessage:@"パスワードは半角英数字で入力して下さい"], [TMValidatorRuleMinLength ruleWithLength:@6 andErrorMessage:@"パスワードは6文字以上で入力して下さい"], [TMValidatorRuleMaxLength ruleWithLength:@16 andErrorMessage:@"パスワードは16文字以内で入力して下さい"] ]];
最後に TMValidator に TMValidatorField を追加します。
[validator addFields:@[emailField, passwordField]];
これで準備完了です。
バリデーションを実行したい時にテキストフィールドなどの text
を TMValidatorField の value
に渡して TMValidator の run
を実行します。
emailField.value = emailTextField.text; passwordField.value = passwordTextField.text; if ([validator run]) { //validate OK!!! } else { //validate failed... NSArray *errors = validator.errors; NSLog(@"errors %@;", errors); }
更に TMValidatorField を保持している TMValidateTextField と TMValidateTextView も用意していますので、わざわざテキストフィールドと TMValidatorField を分離したくないという人はそちらの利用をオススメします。
Fammでは今回、メールアドレスでの新規登録やログイン、プロフィール情報の編集画面等で TMValidator を利用しています。
是非ダウンロードして触ってみて頂ければと思います!
今後の展望としては、サーバー側のバリデーションにJSONスキーマを採用しているので、iOS側でもJSONスキーマが利用出来る様になればいいなと思っています。
他にも要望があれば弊社にお問い合わせ下さい。
バグを見つけた場合 Pull Request をお待ちしています。
子育て家族アプリFamm、カップル専用アプリPairyを運営する Timers inc. では、現在エンジニアを積極採用中!急成長中のサービスの技術の話を少しでも聞いてみたい方、スタートアップで働きたい方など、是非お気軽にご連絡ください!
採用HP : http://timers-inc.com/engineerings