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という名前を付けます。