आप कितनी बार एप्लिकेशन विकसित करते हैं और हर इनपुट फील्ड के लिए वही वैलिडेशन लिखते हैं। ऐसा ही एक उदाहरण यूजर रजिस्ट्रेशन, लॉगिन स्क्रीन या रजिस्ट्रेशन स्क्रीन या कोई अन्य स्क्रीन है। हर इनपुट फील्ड के लिए कोड की वही लाइन लिखना थकाऊ हो जाता है और आप गलती भी कर सकते हैं।
डिजाइन के अनुसार, हर फील्ड के लिए वैलिडेशन लिखने की सिफारिश कभी नहीं की जाती, बल्कि आपको जेनेरिक वैलिडेशन फंक्शन्स लिखने चाहिए।
जेनेरिक वैलिडेशन लाइब्रेरी लिखने के फायदे
- सभी फंक्शन्स के लिए रीयूजेबल कोड
- मानवीय त्रुटि की संभावना कम
- सेटअप करना और अपने कोड में हुक करना बहुत तेज
- एक फंक्शन रीराइट करें और सभी में प्रतिबिंबित होगा
- एक फंक्शन बदलने से सभी बदल जाएंगे
शुरुआत करते हैं
हम अपनी वैलिडेशन लाइब्रेरी और वैलिडेशन एप्लिकेशन विकसित करेंगे जहां हम 4 इनपुट फील्ड्स को अपनी लाइब्रेरी से वैलिडेट करेंगे।
चरण 1: प्रोजेक्ट बनाएं
Xcode खोलें, Single View Application, नाम दें "Validation"
चरण 2: नई क्लास बनाएं
File → Add New File → Swift File → Validation.swift
चरण 3: UI बनाएं
Main.storyboard खोलें और नीचे दिखाए अनुसार UI जोड़ें।

हमने 4 टेक्स्ट फील्ड और एक बटन जोड़ा है, सभी फील्ड्स दर्ज करने के बाद जब यूजर वैलिडेट बटन पर टैप करता है, तो यह सभी फील्ड्स को वैलिडेट करता है और प्रिंट करता है कि कौन सा गलत दर्ज किया गया था, अगर सब ठीक रहा तो "All Fields are correct" प्रिंट करता है।
चरण 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 में वैलिडेशन कोड जोड़ें
import Foundation
class Validation {
public func validateName(name: String) -> Bool {
// लंबाई अधिकतम 18 कैरेक्टर और न्यूनतम 3 कैरेक्टर, आप हमेशा संशोधित कर सकते हैं
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 {
// न्यूनतम 8 कैरेक्टर कम से कम 1 अल्फाबेट और 1 नंबर:
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 ऑब्जेक्ट बनाएं
var validation = Validation()
अब, हम इनपुट फील्ड्स को अनरैप करने के लिए guard का उपयोग करेंगे।
guard let name = validateNameTxtFld.text, let email = validateEmailTxtFld.text, let password = validatePasswordTxtFld.text,
let phone = validatePhoneTxtFld.text else {
return
}
चरण 7: प्रत्येक फील्ड के लिए वैलिडेट फंक्शन्स कॉल करें
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")
}
ViewController.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")
}
}
}