iOSアプリケーションのデータ検証フレームワーク

「当社では、製品の品質に特別な注意を払っています」は、IT分野だけでなく、さまざまなサービスを提供する企業のWebサイトでよく見られるテンプレートフレーズです。 ただし、ソフトウェア製品の品質がどのように達成されるかはユーザーから隠されており、何かがうまくいかなかった瞬間にのみユーザーを興奮させます。 アプリケーションの定性的な指標の1つは、非標準のユーザーアクションへの応答方法です。 ほとんどのクライアントサーバーソリューションでは、これらのアクションはデータ入力に関連しています。 次に、私たちのチームのiOS開発者の間で使用されているデータ検証ソリューションについて説明します。



データ検証の一般的なアプリケーションは、モバイルアプリケーションでよく発生します。 アプリケーションのこのセクションでエラーが引き起こす結果は重大ではない可能性があり、送信データに対する制限が確立されていない場合、システム全体の速度低下につながる可能性があります。 モバイルデバイスの詳細を忘れないでください。アプリケーションをモバイルクライアントとして使用してリモートサービスからのデータを表示する場合は、長時間のダウンロードを避けるためにこのデータの量を制限する必要があります。



まず、検証する必要がある基本データを強調します。 最初の最も一般的なタイプの検証は、入力されたテキストデータの検証です。 原則として、数字もテキストフィールドに表示され、テキスト表現の特殊なケースになります。 2番目のタイプのチェックは、日付の入力に関連する必要があります。 多くの場合、アプリケーションは入力された日付が現在の日付よりも早いかどうかを確認する必要があります。 検証する必要のある3番目のタイプは、直接生データ、またはより単純に、アプリケーションがパフォーマンスを大幅に低下させることなく動作するバイト数です。



上記のすべての項目とそれらに設定されたタスクを解決するためのメソッドは、他の標準iOSパッケージとの類似性によって検証された小さなフレームワークで検証されました-ValidationKit このフレームワークに含まれるものをより明確に理解するために、その内容を次の図で表すことができます。







異なる色は、チェック対象のデータのリストから特定の問題を解決することを目的とした、フレームワークの論理的に分離された部分を示します。 実線は継承を示し、破線はプロトコルの実装を示します。

そのため、すべての検証クラスの基本プロトコルは<VLDValidator>であることが図に示されています。 それから派生したプロトコル<VLDTextValidator>は、テキストデータを直接操作するバリデーターによって実装されます。 実装されたバリデータのそれぞれが何を表しているかを簡単に説明しましょう。



VLDDateValidator-日付の検証に使用されます。 デフォルトでは、バリデーターに渡される日付は現在より前であってはなりません。



VLDRegExpValidator-正規表現ベースのバリデーターの基本クラスとして使用されます。 このクラスの独自の子孫バリデータを実装するには、静的メソッド+(NSString *)regExpPatternをオーバーライドする必要があります。これはルール文字列を返します。



VLDEmailValidatorVLDStrongPasswordValidatorVLDPhoneNumberValidatorは、それぞれ電子メールアドレス、パスワードセキュリティ、および電話番号を確認するために使用される正規表現検証ツールです。



VLDBoundaryNumberValidator-指定された境界内の数値を検証するために使用されます。 チェックする番号の下限と上限が示されています。 たとえば、指定された年は1900年より前で2015年より後であってはなりません。



VLDBoundaryCharactersValidator-文字数を検証するために使用されます。 文字数の下限と上限が示されています。 たとえば、電話は4桁以上11桁以下にすることができます。



多数のプロジェクトでは、処理される行の長さに制限があることに注意してください。 デリゲートメソッド<UITextFieldDelegate>および<UITextViewDelegate>の処理でコードをオーバーロードせずにこの問題を解決するために、必要以上の文字を入力できないVLDTextFieldおよびVLDTextViewクラスが作成されました。 これらのクラスにも、 <VLDTextValidator>プロトコルを実装するカスタムバリデーターを指定できます。 VLDTextFieldの場合 、初期化段階でデフォルトの検証タイプの1つを設定することもできます。



NSString + VLDValidationおよびNSData + VLDValidationカテゴリのタスクは、アプリケーションでユーザーに暗黙的に使用されるデータの長さを確認することです。 これが必要になる可能性がある最も一般的な状況は、データをネットワーク経由でリモートサービスに送信する前にデータのサイズを確認することです。 たとえば、画像の重量が10 MBを超える場合、低速のインターネット環境ではかなりの時間がかかります。 したがって、サーバーに要求を送信する前に、すべての行とデータオブジェクトが指定された値を超えないようにすることができます。



フレームワークは、デフォルトでコンソールロギングも使用します。これは、 VLDHelpersファイルに記述されているマクロを使用して無効にできます。



結論として、開発されたフレームワークが作成されたソリューションのタスクをもう一度注意する価値があります。



  1. 編集のためにフィールドに入力する文字の制限。
  2. 電子メール、パスワード、電話番号の検証。
  3. カスタムバリデーターを作成し、 VLDTextFieldおよびVLDTextViewと組み合わせて使用​​します。
  4. 日付の検証。
  5. 送信または保存されているデータのサイズを確認します。


PSプロジェクトのソースコードはこちらからダウンロードできます



All Articles