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

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

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

ابدأ الدورة

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



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



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

يمكن للمستخدم إدخال أي شيء: من سلسلة فارغة إلى حقن SQL. يساعد التحقق من الصحة في:

  • منع البيانات غير الصحيحة (بريد إلكتروني بدون @، كلمة مرور أقصر من 8 أحرف)؛
  • حماية التطبيق من الهجمات (XSS، الحقن)؛
  • تحسين تجربة المستخدم - إبراز الأخطاء فوراً؛
  • الامتثال لقواعد العمل (مثل العمر > 18 سنة).


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

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



1. Validator (بواسطة eMKa)

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

// التثبيت عبر SPM: https://github.com/eMKa/Validatorimport Validator

let emailRule = ValidationRulePattern(pattern: EmailValidationPattern.standard)let result = "test@example.com".validate(rule: emailRule)switch result {case .valid: print("البريد الإلكتروني صحيح")case .invalid(let errors): print("خطأ: \\(errors.first?.message ?? "خطأ غير معروف")")}

تدعم المكتبة سلاسل القواعد: "password123".validate(rules: [lengthRule, uppercaseRule, digitRule]). مثالية لنماذج التسجيل.



2. SwiftValidator (بواسطة jpotts18)

مكتبة خفيفة للتحقق من حقول الإدخال. تعمل مع UIKit وSwiftUI. تتيح تعيين قواعد لكل حقل نصي.

// التثبيت: https://github.com/jpotts18/SwiftValidatorimport SwiftValidator

let validator = Validator()validator.registerField(emailTextField, rules: [RequiredRule(), EmailRule()])validator.registerField(passwordTextField, rules: [RequiredRule(), MinLengthRule(length: 8)])

validator.validate { errors in if errors.isEmpty { print("جميع الحقول صحيحة") } else { for (field, error) in errors { print("خطأ في \\(field): \\(error.errorMessage)") } }}

مناسبة للنماذج التي تحتوي على العديد من الحقول - يمكن إدارة التحقق مركزيًا.



3. Regex (حل Foundation المدمج)

إذا كنت لا ترغب في إضافة تبعيات خارجية، استخدم NSRegularExpression. مناسب للفحوصات البسيطة.

func isValidEmail(_ email: String) -> Bool {    let pattern = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\\\.[A-Za-z]{2,64}"    let regex = try? NSRegularExpression(pattern: pattern)    let range = NSRange(location: 0, length: email.utf16.count)    return regex?.firstMatch(in: email, range: range) != nil}

// الاستخدامif isValidEmail("user@example.com") { print("البريد الإلكتروني صالح")} else { print("تنسيق البريد الإلكتروني غير صحيح")}

العيب - صعوبة الصيانة والتوسع. للمشاريع الكبيرة، من الأفضل استخدام المكتبات.



4. ValidatedPropertyKit (من المجتمع)

نهج حديث باستخدام property wrappers. يتيح التعليق على خصائص النموذج مباشرة.

// التثبيت: https://github.com/SvenTiigi/ValidatedPropertyKitimport ValidatedPropertyKit

struct User { @Validated(.nonEmpty, .email) var email: String @Validated(.minLength(8), .containsUppercase) var password: String}

var user = User()user.email = "test" // خطأ: بريد إلكتروني غير صالحuser.password = "weak" // خطأ: كلمة مرور قصيرة جداًprint(us

توصيات