SwiftConfig: إدارة تكوين التطبيقات بلغة Swift
SwiftConfig هي مكتبة خفيفة الوزن للغة Swift (iOS/macOS)، مصممة للإدارة المركزية لإعدادات التطبيق. تسمح بتحميل وتحليل والوصول إلى بيانات التكوين من ملفات JSON أو YAML أو plist، كما تدعم متغيرات البيئة. المكتبة مفيدة بشكل خاص للمشاريع التي تتطلب ضبطًا مرنًا لسلوك التطبيق دون إعادة ترجمة (على سبيل المثال، التبديل بين خوادم staging/production).
لماذا تحتاج إلى SwiftConfig؟
في التطوير القياسي لنظامي iOS/macOS، غالبًا ما يتم استخدام UserDefaults أو Info.plist أو ثوابت مشفرة بشكل ثابت. يؤدي هذا إلى مشاكل:
- خلط الكود مع التكوين
- غياب التنميط (جميع القيم عبارة عن نصوص)
- صعوبة التبديل بين البيئات
طريقة التثبيت
أضف SwiftConfig عبر Swift Package Manager في Xcode:
// Package.swift أو عبر قائمة Xcode: File > Add Packages....package(url: "https://github.com/example/SwiftConfig", from: "1.0.0")أو عبر CocoaPods:
pod 'SwiftConfig', '~> 1.0'الوظائف الأساسية
- دعم الصيغ: JSON, YAML, plist, .env
- الوصول المُنمّط: تحويل تلقائي إلى Int, Bool, URL, Date
- المفاتيح الهرمية: الوصول إلى الحقول المتداخلة عبر النقطة (مثل "database.host")
- متغيرات البيئة: أولوية متغيرات البيئة على الإعدادات من الملفات
- التخزين المؤقت: تحميل لمرة واحدة مع إمكانية التحديث الإجباري
مثال على الكود
import SwiftConfig
// تعريف هيكل التكوينstruct AppConfig: Codable { let apiURL: URL let timeout: Double let features: [String: Bool]}
// التحميل من ملف config.jsonlet config = try SwiftConfig.load( from: "config", // اسم الملف بدون امتداد type: .json, as: AppConfig.self)
// الاستخدامprint(config.apiURL) // https://api.example.comprint(config.timeout) // 30.0print(config.features["darkMode"]) // true
// الوصول إلى الحقول المتداخلة دون فك الترميزlet host: String = try SwiftConfig.value(for: "database.host")print(host) // localhostمتى تستخدم SwiftConfig؟
يوصى باستخدامها في السيناريوهات التالية:
- التطبيقات ذات البيئات المتعددة (development, staging, production)
- المشاريع التي تتغير فيها الإعدادات بشكل متكرر (اختبارات A/B، أعلام الميزات)
- التطوير الجماعي (ملف تكوين واحد في المستودع)
- الأدوات الطرفية أو تطبيقات Swift من جانب الخادم (Vapor, Kitura)
المكتبة غير مناسبة لتخزين بيانات المستخدم (استخدم UserDefaults أو CoreData).
الخلاصة
تعمل SwiftConfig على تبسيط إدارة التكوين، مما يجعل الكود أنظف وأكثر قابلية للصيانة. بفضل التنميط الصارم، تتجنب أخطاء وقت التشغيل، ويدعم تعدد الصيغ إمكانية دمج المكتبة بسهولة في المشروع الحالي.