我正在寻找使用Swift 5将结构数组保存到UserDefaults的更新方法。
以下是几年前与Swift 4兼容的一个问题:Save Struct to UserDefaults
是否有针对Swift 5的更新版本/方法?
答案 0 :(得分:-2)
使用The Codable protocol
将结构保存到UserDefaults中
例如:
我们在这里定义Student结构
struct Student: Codable {
var name: String
}
现在使用JSON
将其编码为JSONEncoder
,它将发送回一个Data
实例,您可以直接将其发送到UserDefaults
let mark = Student(name: "Mark Luther")
let encoder = JSONEncoder()
if let encoded = try? encoder.encode(mark) {
let defaults = UserDefaults.standard
defaults.set(encoded, forKey: "SavedStudent")
}
将保存的数据读回到Student
结构是使用JSONDecoder
从数据转换的问题,就像这样:
if let studentData = defaults.object(forKey: "SavedStudent") as? Data {
let decoder = JSONDecoder()
if let student = try? decoder.decode(Student.self, from: studentData) {
print(student.name)
}
}
也许这对您和其他想找到如何在Swift中将结构保存到UserDefaults的人的帮助