IOS
 Computer >> コンピューター >  >> プログラミング >> IOS

SwiftでtextField入力を検証する一般的な方法


アプリケーションを開発し、すべての入力フィールドに対して同じ検証を作成する頻度。そのような例の1つは、ユーザー登録、ログイン画面、登録画面、またはその他の画面です。すべての入力フィールドに同じ行のコードを書くのは面倒になり、さらに同じものを間違える傾向があります。

設計に従って、各フィールドの検証を作成することは決して推奨されません。むしろ、一般的な検証関数を作成する必要があります。

したがって、このブログでは、入力テキストフィールドの一般的な検証ライブラリを作成します。

遺伝子検証ライブラリを作成する利点。

  • すべての機能で再利用可能なコード。
  • ヒューマンエラーの可能性が減少します。
  • セットアップとコードへのフックが非常に高速です。
  • 1つの関数を書き直すことができ、すべてに反映されます。
  • 1つの機能を変更すると、すべてが変更されます。

始めましょう

検証ライブラリと検証アプリケーションを開発し、ライブラリを使用して4つの入力フィールドを検証します。

私たちのライブラリは一般的であり、必要に応じて完全に拡張されます。

ステップ1 − Xcode、シングルビューアプリケーションを開き、Validtionという名前を付けます。

ステップ2 −新しいクラスを作成します。ファイル-→新しいファイルを追加します-→Swiftファイル-→Validtion.swift。

ステップ3 − Main.storyboardを開き、以下に示すようにUIを追加します

SwiftでtextField入力を検証する一般的な方法

4つのテキストフィールドとボタンを追加しました。ユーザーが検証ボタンをタップしたときにすべてのフィールドを入力した後、すべてのフィールドを検証し、間違って入力されたものを印刷します。すべてがうまくいけば、すべてのフィールドが正しく印刷されます。

>

ステップ4 −ボタンには@IBActionを作成し、すべての入力フィールドには@IBOutletを作成します

import UIKit
class ViewController: UIViewController {
   override func viewDidLoad() {
      super.viewDidLoad()
   }
   @IBOutlet var validateNameTxtFld: UITextField!
   @IBOutlet var validateEmailTxtFld: UITextField!
   @IBOutlet var validatePasswordTxtFld: UITextField!
   @IBOutlet var validatePhoneTxtFld: UITextField!
   @IBAction func validateBtn(_ sender: Any) {
   }
}

ステップ5 − Validation.swiftを開きます。ここで、検証コードを追加します。

以下のコードをコピーして、Validation.swiftに配置します

import Foundation
class Validation {
   public func validateName(name: String) ->Bool {
      // Length be 18 characters max and 3 characters minimum, you can always modify.
      let nameRegex = "^\\w{3,18}$"
      let trimmedString = name.trimmingCharacters(in: .whitespaces)
      let validateName = NSPredicate(format: "SELF MATCHES %@", nameRegex)
      let isValidateName = validateName.evaluate(with: trimmedString)
      return isValidateName
   }
   public func validaPhoneNumber(phoneNumber: String) -> Bool {
      let phoneNumberRegex = "^[6-9]\\d{9}$"
      let trimmedString = phoneNumber.trimmingCharacters(in: .whitespaces)
      let validatePhone = NSPredicate(format: "SELF MATCHES %@", phoneNumberRegex)
      let isValidPhone = validatePhone.evaluate(with: trimmedString)
      return isValidPhone
   }
   public func validateEmailId(emailID: String) -> Bool {
      let emailRegEx = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,64}"
      let trimmedString = emailID.trimmingCharacters(in: .whitespaces)
      let validateEmail = NSPredicate(format:"SELF MATCHES %@", emailRegEx)
      let isValidateEmail = validateEmail.evaluate(with: trimmedString)
      return isValidateEmail
   }
   public func validatePassword(password: String) -> Bool {
      //Minimum 8 characters at least 1 Alphabet and 1 Number:
      let passRegEx = "^(?=.*[A-Za-z])(?=.*\\d)[A-Za-z\\d]{8,}$"
      let trimmedString = password.trimmingCharacters(in: .whitespaces)
      let validatePassord = NSPredicate(format:"SELF MATCHES %@", passRegEx)
      let isvalidatePass = validatePassord.evaluate(with: trimmedString)
      return isvalidatePass
   }
   public func validateAnyOtherTextField(otherField: String) -> Bool {
      let otherRegexString = "Your regex String"
      let trimmedString = otherField.trimmingCharacters(in: .whitespaces)
      let validateOtherString = NSPredicate(format: "SELF MATCHES %@", otherRegexString)
      let isValidateOtherString = validateOtherString.evaluate(with: trimmedString)
      return isValidateOtherString
   }
}

要件に応じて、入力ごとにRegexStringを操作できます。

ステップ6 − ViewController.swiftを開き、Validation.swift

のオブジェクトを作成します。
var validation = Validation()

ここで、ガードを使用して入力フィールドのラップを解除します

guard let name = validateNameTxtFld.text, let email = validateEmailTxtFld.text, let password = validatePasswordTxtFld.text,
   let phone = validatePhoneTxtFld.text else {
   return
}

ステップ7 −ここで、各フィールドに対して検証関数を呼び出し、falseが返されるかどうかを確認して、「フィールドが無効です」と出力します。

let isValidateName = self.validation.validateName(name: name)
if (isValidateName == false) {
   print("Incorrect Name")
   return
}
let isValidateEmail = self.validation.validateEmailId(emailID: email)
if (isValidateEmail == false){
   print("Incorrect Email")
   return
}
let isValidatePass = self.validation.validatePassword(password: password)
if (isValidatePass == false) {
   print("Incorrect Pass")
   return
}
let isValidatePhone = self.validation.validaPhoneNumber(phoneNumber: phone)
if (isValidatePhone == false) {
   print("Incorrect Phone")
   return
}

ステップ8 −すべてのフィールドが正しければ、「すべてのフィールドが正しい」と印刷されます

if (isValidateName == true || isValidateEmail == true || isValidatePass == true || isValidatePhone == true) {
   print("All fields are correct")
}

完了です。 VeiwController.swiftの最終コードをチェックアウトする

import UIKit
class ViewController: UIViewController {
   var validation = Validation()
   override func viewDidLoad() {
      super.viewDidLoad()
   }
   @IBOutlet var validateNameTxtFld: UITextField!
   @IBOutlet var validateEmailTxtFld: UITextField!
   @IBOutlet var validatePasswordTxtFld: UITextField!
   @IBOutlet var validatePhoneTxtFld: UITextField!
   @IBAction func validateBtn(_ sender: Any) {
      guard let name = validateNameTxtFld.text, let email = validateEmailTxtFld.text, let password = validatePasswordTxtFld.text,
      let phone = validatePhoneTxtFld.text else {
         return
      }
      let isValidateName = self.validation.validateName(name: name)
      if (isValidateName == false) {
         print("Incorrect Name")
         return
      }
      let isValidateEmail = self.validation.validateEmailId(emailID: email)
      if (isValidateEmail == false) {
         print("Incorrect Email")
         return
      }
      let isValidatePass = self.validation.validatePassword(password: password)
      if (isValidatePass == false) {
         print("Incorrect Pass")
         return
      }
      let isValidatePhone = self.validation.validaPhoneNumber(phoneNumber: phone)
      if (isValidatePhone == false) {
         print("Incorrect Phone")
         return
      }
      if (isValidateName == true || isValidateEmail == true || isValidatePass == true || isValidatePhone == true) {
         print("All fields are correct")
      }
   }
}

  1. 迅速にnavigationBarの境界線を削除するにはどうすればよいですか?

    迅速にナビゲーションバーから境界線を削除するには、数行のコードを追加するだけです。何も変更せずに実行した場合のナビゲーションバーの外観を見てみましょう。 次に、上記の結果に示されている線/境界線を非表示にしてみましょう。 ナビゲーションバーには、上記のように、灰色の影とボトムラインのデフォルトビューを提供する2つの機能があります。 1つは背景画像で、もう1つは影の画像です。 まず、シャドウイメージを空のイメージに設定して非表示にし、どのように表示されるかを確認します。 viewDidLoadに次のコードを追加します- self.navigationController?.navig

  2. テキストに影をすばやく追加するにはどうすればよいですか?

    ゲームやキッズアプリケーション、または魅力的なユーザーインターフェースを作成したいアプリケーションを開発している場合は、テキストに影を付ける方法を知っている必要があります。これにより、テキストが魅力的になるだけでなく、ユーザーエクスペリエンスも向上します。 ここでは、テキストに影を付ける方法を説明します。 ステップ1 −Xcodeを開く→新しいプロジェクト→シングルビューアプリケーション→「ShadowText」という名前を付けましょう ステップ2 − Main.storyboardにラベルを追加し、ラベルの@IBOutletを作成して、lblHelloWorldという名前を付けます。