SwiftConfig: إدارة تكوين التطبيقات بلغة Swift

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

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

ابدأ الدورة

مكتبة SwiftConfig لإدارة تكوين تطبيقات iOS/macOS

SwiftConfig هي مكتبة خفيفة الوزن بلغة Swift، مصممة لإدارة التكوينات بسهولة في تطبيقات iOS و macOS. تتيح فصل الإعدادات (مفاتيح API، نقاط URL النهائية، أعلام الميزات) عن الكود، وتخزينها في ملفات منظمة (JSON, YAML, plist) أو متغيرات البيئة.

لماذا نحتاج SwiftConfig؟

في التطبيقات الحديثة، غالبًا ما يكون من الضروري تغيير السلوك دون إعادة الترجمة: التبديل بين خوادم staging/production، اختبار A/B، تغيير المهلات. يؤدي التخزين اليدوي للتكوينات في UserDefaults أو الترميز الثابت إلى أخطاء ويعقد الصيانة. تحل SwiftConfig هذه المشاكل من خلال توفير:

  • وصول آمن للأنواع إلى القيم عبر enum و Codable
  • دعم مصادر متعددة (ملفات، env، UserDefaults)
  • تحديث تلقائي عند تغيير الملفات (على سبيل المثال، لمعاينات SwiftUI)
  • التحقق من صحة مخطط التكوين عند بدء التشغيل

التثبيت

أضف المكتبة عبر Swift Package Manager في Xcode:

File → Add Packages → أدخل عنوان URL لمستودع SwiftConfig

أو أضف في Package.swift:

.package(url: "https://github.com/example/SwiftConfig.git", from: "1.0.0")

الوظائف الأساسية

  • تعدد التنسيقات: التعرف التلقائي على تنسيق الملف (json, yaml, plist)
  • تراكب البيئة: القيم من متغيرات البيئة لها أولوية على الملفات
  • التخزين المؤقت: يتم التحليل مرة واحدة، ثم تُخزّن البيانات في الذاكرة
  • قائم على البروتوكول: تقوم بتعريف بروتوكول بالمتطلبات، وتقوم المكتبة بإنشاء التطبيق

مثال كود بلغة Swift (iOS/macOS)

import SwiftConfig

// تعريف هيكل التكوينstruct AppConfig: Codable { let apiURL: String let timeout: Double let isFeatureXEnabled: Bool}

// تحميل التكوين من ملف config.jsonlet configManager = try ConfigManager<AppConfig>(source: .file("config"))

// الاستخدام في الكودlet url = URL(string: configManager.current.apiURL)!let session = URLSession(configuration: .default)session.configuration.timeoutIntervalForRequest = configManager.current.timeout

// لـ SwiftUI يمكن استخدام @Publishedclass SettingsViewModel: ObservableObject { @Published var config: AppConfig init() { self.config = try! ConfigManager<AppConfig>(source: .file("config")).current }}

متى تستخدم SwiftConfig؟

  • في مشاريع متعددة البيئات (dev/staging/prod)
  • عند الحاجة لتغيير سلوك التطبيق دون إعادة النشر
  • للعمل مع feature toggles
  • في المكتبات والأطر، حيث يلزم التكوين عبر ملفات التكوين

المكتبة مفيدة بشكل خاص لخطوط أنابيب CI/CD، حيث يتم إدراج متغيرات البيئة ديناميكيًا في مرحلة البناء. تدعم SwiftConfig iOS 15+، macOS 12+ وهي متوافقة تمامًا مع SwiftUI و Combine.

توصيات