Computer >> 컴퓨터 >  >> 프로그램 작성 >> IOS

Swift에서 textField 입력의 유효성을 검사하는 일반적인 방법

<시간/>

애플리케이션을 개발하고 모든 입력 필드에 대해 동일한 유효성 검사를 작성하는 빈도입니다. 그러한 예로는 사용자 등록, 로그인 화면 또는 등록 화면 또는 기타 화면이 있습니다. 모든 입력 필드에 대해 같은 줄의 코드를 작성하는 것은 지루할 뿐만 아니라 같은 실수를 하는 경향이 있습니다.

디자인에 따라 각 필드에 대한 유효성 검사를 작성하는 것은 절대 권장하지 않으며 일반 유효성 검사 기능을 작성해야 합니다.

따라서 이 블로그에서는 입력 텍스트 필드의 일반 유효성 검사 라이브러리를 작성할 것입니다.

유전자 검증 라이브러리 작성의 장점.

  • 모든 기능에 사용할 수 있는 코드를 재사용합니다.
  • 사람이 실수할 가능성이 줄어듭니다.
  • 매우 빠르게 설정하고 코드에 연결할 수 있습니다.
  • 하나의 기능을 다시 작성할 수 있으며 모든 기능에 반영됩니다.
  • 하나의 기능을 변경하면 모든 기능이 변경됩니다.

시작하겠습니다.

우리는 유효성 검사 라이브러리와 유효성 검사 응용 프로그램을 개발할 것입니다. 여기서 우리 라이브러리로 4개의 입력 필드를 유효성 검사할 것입니다.

우리 라이브러리는 일반적이고 필요에 따라 완전히 확장될 것입니다.

1단계 − Xcode, Single View Application을 열고 이름을 Validation으로 지정합니다.

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")
      }
   }
}