在Swift 5中将结构保存到UserDefaults

时间:2020-10-23 23:54:09

标签: swift swift5

我正在寻找使用Swift 5将结构数组保存到UserDefaults的更新方法。

以下是几年前与Swift 4兼容的一个问题:Save Struct to UserDefaults

是否有针对Swift 5的更新版本/方法?

1 个答案:

答案 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的人的帮助

相关问题