微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Swift 5中将结构保存到UserDefaults

如何解决在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 举报,一经查实,本站将立刻删除。