0Pricing
Kotlin Multiplatform Academy · 课时

为什么需要设置抽象

通过一个 API 统一 SharedPreferences 和 NSUserDefaults

为什么需要设置抽象 是 CoddyKit 上的免费 Kotlin Multiplatform Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 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. 🎉

常见问题解答

「为什么需要设置抽象」课时是免费的吗?

是的 — 「为什么需要设置抽象」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Kotlin Multiplatform Academy 课程的其余内容,请升级到 CoddyKit PRO。 Kotlin Multiplatform Academy 课程共包含 4 节课。

「为什么需要设置抽象」这节课中我会学到什么?

通过一个 API 统一 SharedPreferences 和 NSUserDefaults 你通过在浏览器中直接运行的动手代码来练习 Kotlin Multiplatform Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Kotlin Multiplatform Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Kotlin Multiplatform Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。

「为什么需要设置抽象」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Kotlin Multiplatform Academy 课中编写并运行代码吗?

能。每节 Kotlin Multiplatform Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 为什么需要设置抽象
  2. 读取和写入类型化值
  3. 默认值与清除键
  4. 安全地存储认证令牌
← 返回 Kotlin Multiplatform Academy