如何解决在Swift 5中将结构保存到UserDefaults
我正在寻找使用Swift 5将结构数组保存到UserDefaults的更新方法。
以下是几年前与Swift 4兼容的一个问题:Save Struct to UserDefaults
是否有针对Swift 5的更新版本/方法?
解决方法
使用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的人的帮助
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。