تكوين تطبيقات Swift: الأدوات والمكتبات لنظامي iOS/macOS

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

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

ابدأ الدورة

تكوين تطبيقات Swift (iOS/macOS): الأدوات والمكتبات



يعد تكوين التطبيقات جزءًا أساسيًا من التطوير لنظامي iOS وmacOS. فهو يتيح إدارة مرنة لسلوك التطبيق دون تغيير الكود، وضبط المعلمات لبيئات مختلفة (dev/staging/prod)، وتخصيص تجربة المستخدم. في هذه المقالة، سنستعرض الأدوات والمكتبات الرئيسية في Swift لإدارة التكوين.



1. الأدوات المدمجة في iOS/macOS



توفر Apple عدة آليات مدمجة لتخزين وقراءة بيانات التكوين.



1.1 PropertyList (Info.plist)

طريقة تقليدية لتخزين التكوين الثابت. يحتوي ملف Info.plist على الإعدادات الأساسية للتطبيق: الإصدار، معرف الحزمة، الاتجاهات المدعومة، إلخ.



// قراءة قيمة من Info.plistif let appVersion = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as? String {    print("إصدار التطبيق: \\(appVersion)")}

// قراءة مفتاح مخصصif let apiURL = Bundle.main.object(forInfoDictionaryKey: "APIBaseURL") as? String { print("عنوان URL الأساسي للـ API: \\(apiURL)")}


1.2 UserDefaults

UserDefaults هي طريقة بسيطة لتخزين كميات صغيرة من البيانات (سلاسل نصية، أرقام، قيم منطقية). مثالية للإعدادات الشخصية للمستخدم.



// حفظUserDefaults.standard.set(true, forKey: "isDarkModeEnabled")UserDefaults.standard.set("ar", forKey: "appLanguage")

// قراءةlet isDarkMode = UserDefaults.standard.bool(forKey: "isDarkModeEnabled")let language = UserDefaults.standard.string(forKey: "appLanguage") ?? "en"


1.3 SwiftUI @AppStorage

غلاف حديث فوق UserDefaults لـ SwiftUI. يسمح بمزامنة الحالة تلقائيًا مع واجهة المستخدم.



struct SettingsView: View {    @AppStorage("isDarkMode") private var isDarkMode = false    @AppStorage("username") private var username = "ضيف"        var body: some View {        Form {            Toggle("الوضع الداكن", isOn: $isDarkMode)            TextField("اسم المستخدم", text: $username)        }    }}


2. مكتبات للتكوين المتقدم



2.1 Firebase Remote Config

تكوين سحابي من Google. يتيح تغيير معلمات التطبيق دون نشر تحديث في App Store.



import FirebaseRemoteConfig

class RemoteConfigManager { static let shared = RemoteConfigManager() private let remoteConfig = RemoteConfig.remoteConfig() func setup() { let defaults: [String: NSObject] = [ "welcome_message": "مرحبًا بك!" as NSObject, "max_items_count": 20 as NSObject ] remoteConfig.setDefaults(defaults) remoteConfig.fetch(withExpirationDuration: 3600) { status, error in if status == .success { self.remoteConfig.activate() } } } var welcomeMessage: String { remoteConfig.configValue(forKey: "welcome_message").stringValue ?? "" } var maxItemsCount: Int { Int(remoteConfig.configValue(forKey: "max_items_count").numberValue ?? 20) }}


2.2 SwiftyUserDefaults

غلاف مناسب لـ UserDefaults مع دعم Codable ومفاتيح آمنة من حيث النوع.



import SwiftyUserDefaults

extension DefaultsKeys { static let isFirstLaunch = DefaultsKey<Bool>("isFirstLaunch", defaultValue: true) static let userProfile = DefaultsKey<Data?>("userProfile")}

struct UserProfile: Codable { let name: String let age: Int}

// الاستخدامDefaults[.isFirstLaunch] = false

let profile = UserProfile(name: "إيفان", age: 30)if let data = try? JSONEncoder().encode(profile) { Defaults[.userProfile] = data}

if let profileData = Defaults[.userProfile], let decoded = try? JSO

توصيات