我们不能直接将自定义对象存储到 UserDefault 中,需要将其转换成 Data 类型。可以使用 JSONEncoder 将对象编码为 JSON 数据,然后将其存储为 Data 类型,再使用 UserDefault 存储。
示例代码:
// 定义一个自定义类型,需要遵循 Codable 协议
struct User {
let name: String
let age: Int
}
// 创建一个 User 对象
let user = User(name: "Alice", age: 20)
// 将 User 对象编码为 JSON 数据
let encoder = JSONEncoder()
let data = try? encoder.encode(user)
// 将 JSON 数据存储到 UserDefault 中
UserDefaults.standard.set(data, forKey: "user")
// 从 UserDefault 中读取 JSON 数据
if let data = UserDefaults.standard.data(forKey: "user") {
// 将 JSON 数据解码为 User 对象
let decoder = JSONDecoder()
if let user = try? decoder.decode(User.self, from: data) {
print(user.name) // 输出 "Alice"
}
}