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

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

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

ابدأ الدورة

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

التحقق من صحة البيانات هو أحد الجوانب الرئيسية لتطوير تطبيقات الجوال وسطح المكتب عالية الجودة باستخدام Swift. فهو يضمن أن البيانات التي يدخلها المستخدم تتوافق مع التنسيق المتوقع وقواعد العمل. في هذه المقالة، سنستعرض الأساليب الأساسية، والآليات المدمجة، والمكتبات الشائعة للتحقق من الصحة في نظام Apple البيئي.



لماذا يعتبر التحقق من الصحة مهمًا؟

بدون التحقق من الصحة، قد يتلقى التطبيق بيانات غير صحيحة، مما قد يؤدي إلى:

  • أخطاء في عمل الخادم
  • أعطال غير متوقعة (crash) على جانب العميل
  • ثغرات أمنية (حقن SQL، XSS)
  • تجربة مستخدم سيئة


الإمكانيات المدمجة في Swift و Foundation

توفر Swift وإطار العمل Foundation أدوات أساسية ولكنها قوية للتحقق من الصحة.



1. التحقق باستخدام NSPredicate

NSPredicate هي أداة قوية لتصفية البيانات والتحقق منها. وهي تدعم التعبيرات المنتظمة، مما يجعلها ملائمة للتحقق من صحة البريد الإلكتروني وأرقام الهواتف والسلاسل النصية الأخرى.

import Foundation

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

// مثال على الاستخدامlet testEmail = "user@example.com"print(isValidEmail(testEmail)) // true


2. التحقق عبر NSRegularExpression

للسيناريوهات الأكثر تعقيدًا، من الملائم استخدام NSRegularExpression.

func isValidPassword(_ password: String) -> Bool {    // 8 أحرف على الأقل، حرف كبير واحد، حرف صغير واحد، رقم واحد    let passwordRegex = "^(?=.*[a-z])(?=.*[A-Z])(?=.*\\\\d)[a-zA-Z\\\\d]{8,}$"    do {        let regex = try NSRegularExpression(pattern: passwordRegex)        let range = NSRange(location: 0, length: password.utf16.count)        return regex.firstMatch(in: password, options: [], range: range) != nil    } catch {        return false    }}

print(isValidPassword("Swift1234")) // trueprint(isValidPassword("swift123")) // false (لا يوجد حرف كبير)


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

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



1. Validator (من Adam Waite)

واحدة من أشهر المكتبات للتحقق من صحة السلاسل النصية في Swift. تدعم سلاسل القواعد (chain validation) والمحققين المخصصين.

// التثبيت عبر SPM: .package(url: "https://github.com/adamwaite/Validator.git", from: "3.0.0")import Validator

let emailRule = ValidationRulePattern(pattern: EmailValidationPattern.standard, error: "بريد إلكتروني غير صحيح")let nameRule = ValidationRuleLength(min: 2, max: 50, error: "يجب أن يكون الاسم من 2 إلى 50 حرفًا")

let email = "test@mail.ru"let result = email.validate(rule: emailRule)switch result {case .valid: print("البريد الإلكتروني صحيح")case .invalid(let errors): print(errors.first?.message ?? "خطأ")}


2. SwiftValidators (من gkaimakas)

مكتبة خفيفة الوزن مع بناء جملة تصريحي. مناسبة تمامًا للتحقق من الحقول في الوقت الفعلي.

import SwiftValidators

let phone = "+7 (999) 123-45-67"if Validator.isPhoneNumber().trim().validate(phone) { print("رقم الهاتف صحيح")} else { print("تنسيق غير صحيح")}


التحقق من الصحة في SwiftUI باستخدام Combine

غالبًا ما تستخدم التطبيقات الحديثة في SwiftUI Combine للتحقق التفاعلي من الصحة. وهذا يسمح بعرض الأخطاء فورًا أثناء الإدخال.

import SwiftUIimport Combine

class RegistrationViewModel: ObservableObject { @Published var email = "" @P

توصيات