Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> IOS

วิธีทั่วไปในการตรวจสอบอินพุต textField ใน Swift


คุณพัฒนาแอปพลิเคชันบ่อยเพียงใดและคุณเขียนการตรวจสอบความถูกต้องเดียวกันสำหรับทุกช่องป้อนข้อมูล ตัวอย่างหนึ่งคือการลงทะเบียนผู้ใช้ หน้าจอเข้าสู่ระบบ หรือหน้าจอการลงทะเบียน หรือหน้าจออื่นๆ การเขียนโค้ดบรรทัดเดียวกันทุกช่องจะเป็นเรื่องน่าเบื่อ ยิ่งกว่านั้นคุณอาจเข้าใจผิดเหมือนกัน

ตามการออกแบบ เราไม่แนะนำให้เขียนการตรวจสอบความถูกต้องสำหรับแต่ละฟิลด์ แต่คุณควรเขียนฟังก์ชันการตรวจสอบทั่วไป

ดังนั้นในบล็อกนี้ เราจะเขียนไลบรารีตรวจสอบความถูกต้องทั่วไปของช่องข้อความที่ป้อน

ข้อดีของการเขียนไลบรารีตรวจสอบพันธุกรรม

  • ใช้โค้ดซ้ำได้สำหรับทุกฟังก์ชัน
  • โอกาสที่ความผิดพลาดของมนุษย์จะลดลง
  • ตั้งค่าและเชื่อมต่อโค้ดได้รวดเร็วมาก
  • สามารถเขียนฟังก์ชันใหม่ได้หนึ่งฟังก์ชันและจะสะท้อนให้เห็นทั้งหมด
  • การเปลี่ยนฟังก์ชันเดียวจะเปลี่ยนทั้งหมด

มาเริ่มกันเลย

เราจะพัฒนาไลบรารีตรวจสอบความถูกต้องและแอปพลิเคชันตรวจสอบความถูกต้อง โดยเราจะตรวจสอบช่องอินพุต 4 ช่องกับไลบรารีของเรา

ห้องสมุดของเราจะเป็นแบบทั่วไปและขยายได้อย่างสมบูรณ์ตามความต้องการ

ขั้นตอนที่ 1 − เปิด Xcode แอปพลิเคชั่น Single View ตั้งชื่อว่า Validtion

ขั้นตอนที่ 2 − สร้างคลาสใหม่ ไฟล์ -→ เพิ่มไฟล์ใหม่ -→ ไฟล์ Swift -→ Validtion.swift

ขั้นตอนที่ 3 − เปิด Main.storyboard และเพิ่ม UI ดังที่แสดงด้านล่าง

วิธีทั่วไปในการตรวจสอบอินพุต textField ใน Swift

เราได้เพิ่มช่องข้อความ 4 ช่องและปุ่ม 1 ช่อง หลังจากป้อนทุกช่องเมื่อผู้ใช้แตะปุ่มตรวจสอบความถูกต้อง ระบบจะตรวจสอบช่องทั้งหมดและพิมพ์ที่ป้อนไม่ถูกต้อง หากทั้งหมดเป็นไปด้วยดี ระบบจะพิมพ์ช่องทั้งหมดให้ถูกต้อง

ขั้นตอนที่ 4 − สร้าง @IBAction สำหรับปุ่ม และ @IBOutlet สำหรับฟิลด์อินพุตทั้งหมด

<ก่อนหน้า>นำเข้า UIKitclass ViewController:UIViewController { แทนที่ func viewDidLoad () { super.viewDidLoad () } @IBOutlet var validateNameTxtFld:UITextField! @IBOutlet var validateEmailTxtFld:UITextField! @IBOutlet ตรวจสอบรหัสผ่านTxtFld:UITextField! @IBOutlet var validatePhoneTxtFld:UITextField! @IBAction func validateBtn (_ ผู้ส่ง:ใดก็ได้) { }}

ขั้นตอนที่ 5 − เปิด Validation.swift เราจะเพิ่มรหัสตรวจสอบที่นี่

คัดลอกโค้ดด้านล่างแล้ววางใน Validation.swift

นำเข้าการตรวจสอบ Foundationclass Validate { public func validateName (name:String) ->Bool { // ความยาวสูงสุด 18 อักขระและต่ำสุด 3 อักขระ คุณสามารถแก้ไขได้ตลอดเวลา ให้ nameRegex ="^\\w{3,18}$" ให้ trimmedString =name.trimmingCharacters (ใน:.whitespaces) ให้ validateName =NSPredicate (รูปแบบ:"SELF MATCHES %@", nameRegex) ให้ isValidateName =validateName.evaluate ( ด้วย:trimmedString) return isValidateName } public func validaPhoneNumber (phoneNumber:String) -> Bool { ให้ phoneNumberRegex ="^[6-9]\\d{9}$" ให้ trimmedString =phoneNumber.trimmingCharacters (ใน:.whitespaces) ให้ validatePhone =NSPredicate (รูปแบบ:"SELF MATCHES %@", phoneNumberRegex) ให้ isValidPhone =validatePhone.evaluate (ด้วย:trimmedString) ส่งคืน isValidPhone } ฟังก์ชันสาธารณะ validateEmailId (emailID:String) -> Bool { ให้ emailRegEx ="[A-Z0- 9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,64}" ให้ trimmedString =emailID.trimmingCharacters (ใน:.whitespaces ) ให้ validateEmail =NSPredicate(format:"SELF MATCHES %@", emailRegEx) ให้ isValidateEmail =validateEmail.evaluate(with:trimmedString) return isValidate อีเมล } public func validatePassword(รหัสผ่าน:String) -> Bool { //ขั้นต่ำ 8 ตัวอักษรอย่างน้อย 1 ตัวอักษรและ 1 Number:let passRegEx ="^(?=.*[A-Za-z])(?=.* \\d)[A-Za-z\\d]{8,}$" ให้ trimmedString =password.trimmingCharacters (ใน:.whitespaces) ให้ validatePassord =NSPredicate(รูปแบบ:"SELF MATCHES %@", passRegEx) ให้ isvalidatePass =validatePassord.evaluate (ด้วย:trimmedString) return isvalidatePass } public func validateAnyOtherTextField (otherField:String) -> Bool { ให้ otherRegexString ="สตริง regex ของคุณ" ให้ trimmedString =otherField.trimmingCharacters (ใน:.whitespaces) ให้ validateOtherString (รูปแบบ =NSPre) :"SELF MATCHES %@", otherRegexString) ให้ isValidateOtherString =validateOtherString.evaluate(with:trimmedString) return isValidateOtherString }}

เราสามารถจัดการ RegexString สำหรับแต่ละอินพุตได้ตามความต้องการ

ขั้นตอนที่ 6 − เปิด ViewController.swift และสร้างวัตถุของ Validation.swift

การตรวจสอบ var =การตรวจสอบ ()

ตอนนี้เราจะใช้การ์ดเพื่อแกะช่องใส่ข้อมูล

 guard let name =validateNameTxtFld.text ให้อีเมล =validateEmailTxtFld.text ให้รหัสผ่าน =validatePasswordTxtFld.text ให้โทรศัพท์ =validatePhoneTxtFld.text อื่น { return}

ขั้นตอนที่ 7 − ตอนนี้เราจะเรียกใช้ฟังก์ชันตรวจสอบความถูกต้องของเราสำหรับแต่ละฟิลด์ และจะตรวจสอบว่ามันคืนค่าเท็จหรือไม่ จะกลับมาและพิมพ์ว่า “ฟิลด์ไม่ถูกต้อง”

ให้ isValidateName =self.validation.validateName(name:name)if (isValidateName ==false) { print("Incorrect Name") return}ให้ isValidateEmail =self.validation.validateEmailId(emailID:email)if (isValidateEmail ==false){ print("Incorrect Email") return}ให้ isValidatePass =self.validation.validatePassword (รหัสผ่าน:รหัสผ่าน)if (isValidatePass ==false) { พิมพ์ ("Incorrect Pass") return} ให้ isValidatePhone =self.validation validaPhoneNumber (หมายเลขโทรศัพท์:โทรศัพท์) ถ้า (isValidatePhone ==false) { พิมพ์ ("โทรศัพท์ไม่ถูกต้อง") ส่งคืน}

ขั้นตอนที่ 8 − หากฟิลด์ทั้งหมดถูกต้อง เราจะพิมพ์ "ทุกฟิลด์ถูกต้อง"

if (isValidateName ==true || isValidateEmail ==true || isValidatePass ==true || isValidatePhone ==true) { พิมพ์ ("ทุกช่องถูกต้อง")}

เสร็จแล้ว! รหัสสุดท้ายของการชำระเงินสำหรับ VeiwController.swift

นำเข้า UIKitclass ViewController:UIViewController { var validation =Validation () แทนที่ func viewDidLoad () { super.viewDidLoad () } @IBOutlet var validateNameTxtFld:UITextField! @IBOutlet var validateEmailTxtFld:UITextField! @IBOutlet var ตรวจสอบรหัสผ่านTxtFld:UITextField! @IBOutlet var validatePhoneTxtFld:UITextField! @IBAction func validateBtn (_ ผู้ส่ง:ใดก็ได้) { guard let name =validateNameTxtFld.text ให้อีเมล =validateEmailTxtFld.text ให้รหัสผ่าน =validatePasswordTxtFld.text ให้โทรศัพท์ =validatePhoneTxtFld.text อื่น { return } ให้ isValidateName =self.validation ตรวจสอบชื่อ (ชื่อ:ชื่อ) ถ้า (isValidateName ==false) { พิมพ์ ("ชื่อไม่ถูกต้อง") ส่งคืน } ให้ isValidateEmail =self.validation.validateEmailId (emailID:อีเมล) ถ้า (isValidateEmail ==false) { พิมพ์ ("อีเมลไม่ถูกต้อง" ) return } ให้ isValidatePass =self.validation.validatePassword (รหัสผ่าน:รหัสผ่าน) ถ้า (isValidatePass ==false) { print ("Incorrect Pass") return } ให้ isValidatePhone =self.validation.validaPhoneNumber (phoneNumber:โทรศัพท์) ถ้า (isValidatePhone ==false) { print("Incorrect Phone") return } ถ้า (isValidateName ==true || isValidateEmail ==true || isValidatePass ==true || is ValidatePhone ==true) { พิมพ์ ("ทุกช่องถูกต้อง") } }}