Swift (iOS/macOS) में डेटा सत्यापन: सर्वोत्तम अभ्यास और उपकरण

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

Swift (iOS/macOS) में डेटा सत्यापन: सही उपकरण कैसे चुनें और गलती न करें

\n\n

डेटा सत्यापन Swift में मोबाइल और डेस्कटॉप एप्लिकेशन विकास के प्रमुख चरणों में से एक है। इसके बिना उपयोगकर्ता इनपुट की सटीकता, डेटा सुरक्षा और एप्लिकेशन के स्थिर संचालन की गारंटी देना असंभव है। इस लेख में, हम Apple इकोसिस्टम में लोकप्रिय लाइब्रेरी और सत्यापन दृष्टिकोणों पर चर्चा करेंगे, साथ ही iOS और macOS के लिए कोड उदाहरण भी देंगे।

\n\n

Swift में डेटा सत्यापन की आवश्यकता क्यों है?

\n

उपयोगकर्ता कुछ भी दर्ज कर सकता है: खाली स्ट्रिंग से लेकर SQL इंजेक्शन तक। सत्यापन मदद करता है:

\n
    \n
  • गलत डेटा को रोकने में (बिना @ के ईमेल, 8 वर्णों से छोटा पासवर्ड);
  • \n
  • एप्लिकेशन को हमलों से बचाने में (XSS, इंजेक्शन);
  • \n
  • UX में सुधार करने में — तुरंत त्रुटियों को हाइलाइट करना;
  • \n
  • व्यावसायिक नियमों का पालन करने में (जैसे, आयु > 18 वर्ष)।
  • \n
\n\n

Swift में सत्यापन के लिए लोकप्रिय लाइब्रेरी

\n

हालाँकि Foundation में बुनियादी उपकरण (NSPredicate, रेगुलर एक्सप्रेशन) मौजूद हैं, जटिल परिदृश्यों के लिए विशेष लाइब्रेरी का उपयोग करना बेहतर है।

\n\n

1. Validator (eMKa द्वारा)

\n

सबसे लोकप्रिय ओपन-सोर्स लाइब्रेरी में से एक। यह स्ट्रिंग, संख्याओं, तिथियों और कस्टम नियमों के सत्यापन का समर्थन करता है।

\n
// SPM के माध्यम से स्थापना: https://github.com/eMKa/Validator\nimport Validator\n\nlet emailRule = ValidationRulePattern(pattern: EmailValidationPattern.standard)\nlet result = "test@example.com".validate(rule: emailRule)\nswitch result {\ncase .valid:\n    print("ईमेल सही है")\ncase .invalid(let errors):\n    print("त्रुटि: \\(errors.first?.message ?? "अज्ञात त्रुटि")")\n}
\n

लाइब्रेरी नियमों की श्रृंखला का समर्थन करती है: "password123".validate(rules: [lengthRule, uppercaseRule, digitRule])। यह पंजीकरण फॉर्म के लिए आदर्श है।

\n\n

2. SwiftValidator (jpotts18 द्वारा)

\n

इनपुट फ़ील्ड के सत्यापन के लिए हल्की लाइब्रेरी। यह UIKit और SwiftUI के साथ काम करती है। प्रत्येक टेक्स्ट फ़ील्ड के लिए नियम निर्धारित करने की अनुमति देती है।

\n
// स्थापना: https://github.com/jpotts18/SwiftValidator\nimport SwiftValidator\n\nlet validator = Validator()\nvalidator.registerField(emailTextField, rules: [RequiredRule(), EmailRule()])\nvalidator.registerField(passwordTextField, rules: [RequiredRule(), MinLengthRule(length: 8)])\n\nvalidator.validate { errors in\n    if errors.isEmpty {\n        print("सभी फ़ील्ड मान्य हैं")\n    } else {\n        for (field, error) in errors {\n            print("\\(field) में त्रुटि: \\(error.errorMessage)")\n        }\n    }\n}
\n

यह बड़ी संख्या में फ़ील्ड वाले फॉर्म के लिए उपयुक्त है — सत्यापन को केंद्रीय रूप से प्रबंधित किया जा सकता है।

\n\n

3. Regex (Foundation का अंतर्निहित समाधान)

\n

यदि आप तृतीय-पक्ष निर्भरताएँ नहीं जोड़ना चाहते हैं, तो NSRegularExpression का उपयोग करें। यह सरल जाँच के लिए उपयुक्त है।

\n
func isValidEmail(_ email: String) -> Bool {\n    let pattern = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\\\.[A-Za-z]{2,64}"\n    let regex = try? NSRegularExpression(pattern: pattern)\n    let range = NSRange(location: 0, length: email.utf16.count)\n    return regex?.firstMatch(in: email, range: range) != nil\n}\n\n// उपयोग\nif isValidEmail("user@example.com") {\n    print("ईमेल मान्य है")\n} else {\n    print("ईमेल का गलत प्रारूप")\n}
\n

नुकसान — इसे बनाए रखना और विस्तारित करना कठिन है। बड़ी परियोजनाओं के लिए लाइब्रेरी का उपयोग करना बेहतर है।

\n\n

4. ValidatedPropertyKit (समुदाय द्वारा)

\n

property wrappers का उपयोग करके आधुनिक दृष्टिकोण। यह मॉडल गुणों को सीधे एनोटेट करने की अनुमति देता है।

\n
// स्थापना: https://github.com/SvenTiigi/ValidatedPropertyKit\nimport ValidatedPropertyKit\n\nstruct User {\n    @Validated(.nonEmpty, .email) var email: String\n    @Validated(.minLength(8), .containsUppercase) var password: String\n}\n\nvar user = User()\nuser.email = "test" // त्रुटि: अमान्य ईमेल\nuser.password = "weak" // त्रुटि: पासवर्ड बहुत छोटा है\nprint(us                    

अनुशंसाएँ