MST

星途 面试题库

面试题:Swift中如何使用UserDefaults在SwiftUI应用里实现简单数据持久化

假设你正在开发一个SwiftUI应用,用户可以在一个文本框中输入一段文字,关闭应用后再次打开,希望上次输入的文字能自动显示。请描述实现这个功能的步骤,并且给出关键代码示例。
40.9万 热度难度
编程语言Swift

知识考点

AI 面试

面试题答案

一键面试
  1. 步骤描述
    • 数据存储:使用UserDefaults来保存用户输入的文本。UserDefaults是一个简单的持久化存储机制,适用于存储少量数据,如用户设置、简短文本等。
    • 监听文本变化:在用户输入文本时,实时监听文本框中文字的变化,并将其保存到UserDefaults中。
    • 读取数据:在应用启动时,从UserDefaults中读取上次保存的文本,并显示在文本框中。
  2. 关键代码示例
import SwiftUI

class UserData: ObservableObject {
    @Published var inputText: String = "" {
        didSet {
            UserDefaults.standard.set(inputText, forKey: "inputTextKey")
        }
    }
    
    init() {
        if let savedText = UserDefaults.standard.string(forKey: "inputTextKey") {
            inputText = savedText
        }
    }
}

struct ContentView: View {
    @StateObject var userData = UserData()
    
    var body: some View {
        VStack {
            TextField("输入文字", text: $userData.inputText)
               .padding()
        }
    }
}

在上述代码中:

  • UserData类继承自ObservableObject,用于管理输入文本状态。@Published属性包装器使得inputText的变化能被视图监听。didSet观察者在inputText值改变时,将其保存到UserDefaults中。构造函数initUserDefaults中读取上次保存的文本并初始化inputText
  • ContentView视图使用@StateObject来创建和管理UserData实例,并将inputText绑定到TextField,实现文本的输入和显示功能。