التحقق من صحة البيانات في Swift (iOS/macOS): المكتبات والمنهجيات

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

التحقق من صحة البيانات في Swift (iOS/macOS): المكتبات والأدوات والأمثلة العملية



التحقق من صحة البيانات هو أحد الجوانب الأساسية لتطوير تطبيقات iOS وmacOS عالية الجودة. بدون التحقق الموثوق من البيانات المدخلة، قد يواجه المستخدم أخطاءً أو سلوكًا غير صحيح للواجهة أو حتى أعطالًا. في هذه المقالة، سنستعرض أفضل المكتبات والمنهجيات للتحقق من صحة البيانات في Swift، بالإضافة إلى تقديم أمثلة كود محددة.



لماذا نحتاج إلى التحقق من صحة البيانات؟

يتيح التحقق من الصحة ما يلي:

  • ضمان صحة البيانات المدخلة (البريد الإلكتروني، رقم الهاتف، كلمة المرور).
  • منع الأخطاء على جانب الخادم.
  • تحسين تجربة المستخدم من خلال التغذية الراجعة الفورية.
  • زيادة أمان التطبيق.


المكتبات الشائعة للتحقق من الصحة في Swift

يوجد حاليًا العديد من المكتبات الموثوقة التي تسهل التحقق من صحة البيانات:

  • Validated — مكتبة خفيفة تدعم Combine وSwiftUI.
  • SwiftValidator — واحدة من أولى المكتبات للتحقق من صحة حقول النص.
  • Validator (من Adamwaite) — أداة بسيطة ومرنة مع العديد من القواعد المضمنة.
  • Regex — ليست مكتبة، بل آلية مدمجة للعمل مع التعبيرات النمطية، والتي تُستخدم غالبًا للتحقق من الصحة.


مثال 1: التحقق من صحة البريد الإلكتروني باستخدام التعبير النمطي

أبسط طريقة هي استخدام NSRegularExpression أو الطريقة المدمجة range(of:options:).

import Foundation

func isValidEmail(_ email: String) -> Bool { let emailRegex = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\\\.[A-Za-z]{2,64}" let emailPredicate = NSPredicate(format: "SELF MATCHES %@", emailRegex) return emailPredicate.evaluate(with: email)}

// الاستخدامprint(isValidEmail("test@example.com")) // trueprint(isValidEmail("invalid-email")) // false


مثال 2: التحقق من صحة كلمة المرور (الطول، وجود الأرقام والرموز)

غالبًا ما يُطلب أن تحتوي كلمة المرور على 8 أحرف على الأقل، ورقم واحد على الأقل، وحرف خاص واحد.

func isValidPassword(_ password: String) -> Bool {    // 8 أحرف على الأقل    guard password.count >= 8 else { return false }        // التحقق من وجود رقم    let digitRegex = ".*[0-9]+.*"    let digitPredicate = NSPredicate(format: "SELF MATCHES %@", digitRegex)    guard digitPredicate.evaluate(with: password) else { return false }        // التحقق من وجود حرف خاص    let specialCharRegex = ".*[!@#$%^&*()_+\\\\-=\\\\[\\\\]{};':\\"\\\\\\\\|,./<>?]+.*"    let specialPredicate = NSPredicate(format: "SELF MATCHES %@", specialCharRegex)    guard specialPredicate.evaluate(with: password) else { return false }        return true}

print(isValidPassword("Pass123!")) // trueprint(isValidPassword("weak")) // false


مثال 3: استخدام مكتبة Validator (Adamwaite)

توفر مكتبة Validator بناء جملة مناسبًا لسلاسل القواعد.

import Validator

let emailRule = ValidationRulePattern(pattern: EmailValidationPattern.standard, error: "بريد إلكتروني غير صحيح")let emailResult = "user@domain.com".validate(rule: emailRule)

switch emailResult {case .valid: print("البريد الإلكتروني صحيح")case .invalid(let errors): print("خطأ: \\(errors.first?.message ?? "")")}


مثال 4: مدقق مخصص للتحقق من العمر

في بعض الأحيان، نحتاج إلى التحقق من أن المستخدم أكبر من سن معينة.

struct AgeValidator {    static func isValid(age: Int) -> Bool {        return age >= 18 && age <= 120    }}

// الاستخدامlet userAge = 25if AgeValidator.isValid(age: userAge) { print(

توصيات