আপনি কত ঘন ঘন একটি অ্যাপ্লিকেশন বিকাশ করেন এবং আপনি প্রতিটি ইনপুট ক্ষেত্রের জন্য একই বৈধতা লেখেন। এরকম একটি উদাহরণ হল ইউজার রেজিস্ট্রেশন, লগইন স্ক্রীন বা রেজিস্ট্রেশন স্ক্রীন বা অন্য কোন স্ক্রীন। প্রতিটি ইনপুট ক্ষেত্রের জন্য কোডের একই লাইন লেখা ক্লান্তিকর হয়ে ওঠে এবং আপনি একই ভুল করতে পারেন।
ডিজাইন অনুযায়ী প্রতিটি ক্ষেত্রের জন্য বৈধতা লেখার সুপারিশ করা হয় না, বরং আপনার জেনেরিক বৈধতা ফাংশন লেখা উচিত।
তাই এই ব্লগে আমরা ইনপুট টেক্সট ফিল্ডের জেনেরিক ভ্যালিডেশন লাইব্রেরি লিখব৷
জেনেটিক ভ্যালিডেশন লাইব্রেরি লেখার সুবিধা।
- সমস্ত ফাংশনের জন্য পুনরায় ব্যবহারযোগ্য কোড।
- মানুষের ভুল হওয়ার সম্ভাবনা কমে যায়।
- আপনার কোড সেটআপ এবং হুক করার জন্য খুব দ্রুত।
- একটি ফাংশন পুনর্লিখন করতে পারে এবং সমস্তটিতে প্রতিফলিত হবে।
- একটি ফাংশন পরিবর্তন করলে সব বদলে যাবে।
চলুন শুরু করা যাক,
আমরা আমাদের বৈধতা লাইব্রেরি এবং বৈধতা অ্যাপ্লিকেশন বিকাশ করব যেখানে, আমরা আমাদের লাইব্রেরির সাথে 4টি ইনপুট ক্ষেত্র যাচাই করব৷
আমাদের লাইব্রেরি হবে জেনেরিক এবং প্রয়োজন অনুযায়ী সম্পূর্ণভাবে প্রসারিত করা হবে।
ধাপ 1 − Xcode খুলুন, একক দৃশ্য অ্যাপ্লিকেশন, এটির নাম দিন Validtion৷
৷ধাপ 2 − নতুন ক্লাস তৈরি করুন, ফাইল -→ নতুন ফাইল যোগ করুন -→ সুইফট ফাইল -→ 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 − আমরা এখন প্রতিটি ক্ষেত্রের জন্য আমাদের বৈধ ফাংশনকে কল করব, এবং এটি মিথ্যা রিটার্ন করে কিনা তা পরীক্ষা করে দেখব এবং "ক্ষেত্র অবৈধ" প্রিন্ট করবে।
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") } } }