ما هو SwiftyConfiguration؟
SwiftyConfiguration هي مكتبة خفيفة الوزن لإدارة إعدادات التطبيقات بلغة Swift (iOS/macOS). تتيح لك فصل الإعدادات (مفاتيح API، عناوين URL، معلمات البيئة) في ملفات منفصلة وتحميلها في وقت التشغيل. على عكس UserDefaults القياسي أو Info.plist، تدعم المكتبة الكتابة الصارمة (strict typing)، والبيئات المتعددة (dev/staging/prod)، والتوليد التلقائي للكود.
لماذا نحتاج هذا؟
في المشاريع الحقيقية، غالبًا ما تكون الإعدادات موزعة في الكود: بعض المعلمات موجودة في Constants.swift، وأخرى في UserDefaults، وثالثة في .xcconfig. يؤدي هذا إلى الارتباك والأخطاء أثناء الدمج وصعوبات في دعم الخوادم الخلفية المختلفة. يحل SwiftyConfiguration مشكلة المصدر الوحيد للحقيقة (single source of truth) لجميع إعدادات التطبيق.
التثبيت
أضف المكتبة عبر Swift Package Manager في Xcode: File → Add Packages → أدخل رابط المستودع. أو عبر Package.swift:
dependencies: [ .package(url: "https://github.com/your-repo/SwiftyConfiguration.git", from: "1.0.0")]بعد التثبيت، قم باستيراد الوحدة: import SwiftyConfiguration.
الوظائف الرئيسية
- دعم YAML/JSON/TOML — إعدادات بتنسيق قابل للقراءة.
- أمان الأنواع (Type safety) — إلغاء تسلسل تلقائي إلى هياكل Swift.
- البيئات — التبديل بين dev/staging/prod دون تغيير الكود.
- التحديث المباشر — الاشتراك في تغييرات الإعدادات في وقت التشغيل.
- التخزين المؤقت — التخزين المؤقت (memoization) لتسريع الوصول.
مثال كود
أنشئ ملف config.yaml في جذر المشروع:
api: baseUrl: "https://api.example.com" timeout: 30analytics: enabled: true appKey: "abc123"حدد النموذج في Swift:
import SwiftyConfiguration
struct AppConfig: Codable { let api: API let analytics: Analytics
struct API: Codable { let baseUrl: String let timeout: Int }
struct Analytics: Codable { let enabled: Bool let appKey: String }}قم بتحميل الإعدادات:
let config = try Configuration.load(file: "config", type: .yaml, environment: .development)print(config.api.baseUrl) // "https://api.example.com" للتبديل إلى production، قم ببساطة بتغيير معامل environment أو أضف ملف config.prod.yaml.
متى نستخدمها؟
- المشاريع ذات الخوادم الخلفية المتعددة (dev/staging/prod).
- التطبيقات التي تتغير فيها الإعدادات دون إصدار (اختبارات A/B، مفاتيح الميزات).
- الهندسة المعمارية القائمة على الخدمات المصغرة بلغة Swift (Vapor, Kitura).
- التطوير الجماعي — معيار موحد لجميع المطورين.
المكتبة مثالية لمشاريع iOS و macOS حيث تكون نظافة الكود ومرونة الإعدادات مهمة. تجنب استخدامها للتطبيقات البسيطة جدًا ذات ثابت واحد — حيث يكفي UserDefaults. ولكن لكل ما هو أكثر تعقيدًا من "Hello World"، سيوفر لك SwiftyConfiguration ساعات من التصحيح.