SwiftでtextField入力を検証する一般的な方法
アプリケーションを開発し、すべての入力フィールドに対して同じ検証を作成する頻度。そのような例の1つは、ユーザー登録、ログイン画面、登録画面、またはその他の画面です。すべての入力フィールドに同じ行のコードを書くのは面倒になり、さらに同じものを間違える傾向があります。
設計に従って、各フィールドの検証を作成することは決して推奨されません。むしろ、一般的な検証関数を作成する必要があります。
したがって、このブログでは、入力テキストフィールドの一般的な検証ライブラリを作成します。
遺伝子検証ライブラリを作成する利点。
- すべての機能で再利用可能なコード。
- ヒューマンエラーの可能性が減少します。
- セットアップとコードへのフックが非常に高速です。
- 1つの関数を書き直すことができ、すべてに反映されます。
- 1つの機能を変更すると、すべてが変更されます。
始めましょう
検証ライブラリと検証アプリケーションを開発し、ライブラリを使用して4つの入力フィールドを検証します。
私たちのライブラリは一般的であり、必要に応じて完全に拡張されます。
ステップ1 − Xcode、シングルビューアプリケーションを開き、Validtionという名前を付けます。
ステップ2 −新しいクラスを作成します。ファイル-→新しいファイルを追加します-→Swiftファイル-→Validtion.swift。
ステップ3 − Main.storyboardを開き、以下に示すようにUIを追加します
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") } } }
-
迅速にnavigationBarの境界線を削除するにはどうすればよいですか?
迅速にナビゲーションバーから境界線を削除するには、数行のコードを追加するだけです。何も変更せずに実行した場合のナビゲーションバーの外観を見てみましょう。 次に、上記の結果に示されている線/境界線を非表示にしてみましょう。 ナビゲーションバーには、上記のように、灰色の影とボトムラインのデフォルトビューを提供する2つの機能があります。 1つは背景画像で、もう1つは影の画像です。 まず、シャドウイメージを空のイメージに設定して非表示にし、どのように表示されるかを確認します。 viewDidLoadに次のコードを追加します- self.navigationController?.navig
-
テキストに影をすばやく追加するにはどうすればよいですか?
ゲームやキッズアプリケーション、または魅力的なユーザーインターフェースを作成したいアプリケーションを開発している場合は、テキストに影を付ける方法を知っている必要があります。これにより、テキストが魅力的になるだけでなく、ユーザーエクスペリエンスも向上します。 ここでは、テキストに影を付ける方法を説明します。 ステップ1 −Xcodeを開く→新しいプロジェクト→シングルビューアプリケーション→「ShadowText」という名前を付けましょう ステップ2 − Main.storyboardにラベルを追加し、ラベルの@IBOutletを作成して、lblHelloWorldという名前を付けます。