SwiftyJSON لـ Swift: دليل شامل مع أمثلة

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

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

ابدأ الدورة

ما هو SwiftyJSON ولماذا هو مطلوب؟

\n\n

SwiftyJSON هي مكتبة خفيفة وقوية للغة Swift، مصممة لتبسيط العمل مع بيانات JSON. في الإصدار القياسي من Swift، يتم العمل مع JSON (التسلسل وإلغاء التسلسل) من خلال البروتوكول المدمج Codable أو من خلال JSONSerialization من Foundation. ومع ذلك، فإن هذه الأساليب لها عدد من العيوب، خاصة عند العمل مع حقول JSON المعقدة أو المتداخلة أو الاختيارية.

\n\n

المشاكل الرئيسية للطريقة الأصلية:

\n
    \n
  • كود ضخم: للوصول إلى الحقول المتداخلة بعمق، يجب كتابة تركيبات مطولة مع سلاسل اختيارية (optional chaining) وتحويلات الأنواع.
  • \n
  • أخطاء تحويل الأنواع: غالبًا ما يكون من الضروري تحويل Any? صراحةً إلى النوع المطلوب، مما قد يؤدي إلى تعطل التطبيق في حالة عدم تطابق البيانات.
  • \n
  • صعوبة مع الحقول الاختيارية: معالجة المفاتيح المفقودة أو القيم null تتطلب فحوصات إضافية.
  • \n
  • انخفاض قابلية القراءة: يصبح كود تحليل JSON سريعًا معقدًا ويصعب صيانته.
  • \n
\n\n

كيف يحل SwiftyJSON هذه المشاكل:

\n

يوفر SwiftyJSON واجهة أنيقة ومتسلسلة (chainable) للوصول إلى بيانات JSON. بدلاً من كتابة if let dict = json as? [String: Any] { ... }، يمكنك ببساطة كتابة json["key"]["subkey"].string. تقوم المكتبة تلقائيًا بمعالجة القيم الاختيارية، بإرجاع nil بدلاً من إثارة استثناء إذا كان المفتاح مفقودًا أو النوع غير متطابق. وهذا يجعل الكود أقصر بكثير وأكثر أمانًا ووضوحًا.

\n\n

SwiftyJSON مفيدة بشكل خاص عند العمل مع REST API، وملفات التكوين، ورسائل WebSocket، وأي مصادر بيانات أخرى حيث يكون JSON هو التنسيق الأساسي للتبادل.

\n\n

تثبيت SwiftyJSON

\n\n

يتم تثبيت SwiftyJSON عبر Swift Package Manager (SPM) أو CocoaPods. دعنا نستعرض كلا الطريقتين.

\n\n

الطريقة 1: Swift Package Manager (موصى به)

\n

SPM مدمج في Xcode وهو الطريقة المفضلة لإدارة التبعيات.

\n
    \n
  1. افتح مشروعك في Xcode.
  2. \n
  3. انتقل إلى File → Add Packages....
  4. \n
  5. أدخل رابط المستودع: https://github.com/SwiftyJSON/SwiftyJSON.git
  6. \n
  7. اختر الإصدار (عادةً "Up to Next Major" مع أحدث إصدار مستقر، على سبيل المثال 5.0.0).
  8. \n
  9. اضغط على "Add Package".
  10. \n
  11. تأكد من إضافة الحزمة إلى هدفك (target).
  12. \n
\n\n

يمكنك أيضًا إضافة التبعية يدويًا في ملف Package.swift الخاص بحزمة SPM الخاصة بك:

\n
// swift-tools-version:5.5\nimport PackageDescription\n\nlet package = Package(\n    name: "MyPackage",\n    dependencies: [\n        .package(url: "https://github.com/SwiftyJSON/SwiftyJSON.git", from: "5.0.0")\n    ],\n    targets: [\n        .target(\n            name: "MyPackage",\n            dependencies: ["SwiftyJSON"])\n    ]\n)
\n\n

الطريقة 2: CocoaPods

\n

إذا كنت تستخدم CocoaPods، أضف السطر التالي إلى ملف Podfile الخاص بك:

\n
target 'YourAppTarget' do\n  use_frameworks!\n  pod 'SwiftyJSON', '~> 5.0'\nend
\n

ثم نفذ الأمر pod install في الطرفية.

\n\n

بداية سريعة: المثال الأول

\n\n

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

\n
let jsonString = """\n{\n    "name": "Alice",\n    "age": 30,\n    "is_active": true,\n    "address": {\n        "city": "New York",\n        "zip": "10001"\n    },\n    "hobbies": ["reading", "swimming", "coding"]\n}\n"""
\n\n

الآن دعنا نرى كيف يمكننا تحليل JSON هذا باستخدام SwiftyJSON:

\n
import SwiftyJSON\n\n// 1. تحويل السلسلة إلى بيانات\nguard                    

توصيات