لماذا نحتاج إلى تجريد الإعدادات
واجهة API واحدة فوق SharedPreferences وNSUserDefaults
لماذا نحتاج إلى تجريد الإعدادات درس مجاني في Kotlin Multiplatform Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Kotlin Multiplatform Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Kotlin Multiplatform Academy 4 دروس في المجموع.
بعض أجزاء هذا الدرس لم تُترجم بعد وتظهر باللغة الإنجليزية.
The Storage Gap
Android and iOS each ship their own way to save small values. Without a shared layer, you would write that code twice. Let's fix that. 🔑
Two Native Stores
Android stores small key-value data in SharedPreferences, while iOS uses NSUserDefaults. Same idea, two very different APIs.
One API to Rule Them
A Settings abstraction wraps both native stores behind a single Kotlin interface, so your shared code calls one method everywhere.
Meet Multiplatform Settings
The community library multiplatform-settings gives you exactly that: one Settings type backed by the right native store on each platform.
Add the Dependency
You add the multiplatform-settings artifact to your shared module's commonMain so every target can use it.
commonMain.dependencies {
implementation("com.russhwolf:multiplatform-settings:1.1.1")
}The Settings Interface
At its core sits the Settings interface. Your shared code depends on this type, never on the platform store directly.
interface Settings {
fun putString(key: String, value: String)
fun getString(key: String, defaultValue: String): String
}Why Abstract at All
Abstraction keeps your shared logic portable. Swap the backing store or add a platform later, and the calling code never changes.
Perfect for Small Data
Settings is built for small values: flags, a username, a theme choice. For big or relational data, reach for SQLDelight instead.
Inject, Don't Create
Each platform builds its own Settings instance and passes it into shared code, so commonMain stays free of platform dependencies.
Call It from Common
Once injected, your shared code just calls Settings methods. The same line runs on Android and iOS without a single change.
fun saveTheme(settings: Settings, theme: String) {
settings.putString("theme", theme)
}Test-Friendly by Design
Because it's an interface, you can drop in a fake in-memory Settings during tests, no device or emulator needed. 🧪
Quick Check
Let's make sure the abstraction's purpose is clear.
Recap
You learned why KMP wraps native key-value stores behind one Settings interface: portable, testable, and written once. Next, real reads and writes. 🎉
تعلم Kotlin مع معلم ذكاء اصطناعي — مجانًا
اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.
- الدورات
- 30
- الدروس
- 120
الأسئلة الشائعة
هل درس «لماذا نحتاج إلى تجريد الإعدادات» مجاني؟
نعم — نص درس «لماذا نحتاج إلى تجريد الإعدادات» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Kotlin Multiplatform Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Kotlin Multiplatform Academy 4 دروس في المجموع.
ماذا ستتعلم في «لماذا نحتاج إلى تجريد الإعدادات»؟
واجهة API واحدة فوق SharedPreferences وNSUserDefaults تتمرن على Kotlin Multiplatform Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Kotlin Multiplatform Academy؟
لا تُشترط خبرة سابقة. Kotlin Multiplatform Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «لماذا نحتاج إلى تجريد الإعدادات»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Kotlin Multiplatform Academy هذا؟
نعم. كل درس في Kotlin Multiplatform Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- لماذا نحتاج إلى تجريد الإعدادات
- قراءة القيم ذات الأنواع وكتابتها
- القيم الافتراضية ومسح المفاتيح
- تخزين Auth Token بأمان