PlayGroundで実行すると中身が逐次確認できて良い。
データの用意
//データの作成
let hogeKey = "hoge"
struct Person: Codable {
var name: String
var message: String
}
var some_person: [Person] = [
Person(name: "John", message:"hello"),
Person(name: "Kaiky", message:"hi!!"),
]
保存とロード
//保存
func savePerson(persons: [Person]) {
let jsonEncoder = JSONEncoder()
guard let data = try? jsonEncoder.encode(persons) else {
return
}
UserDefaults.standard.set(data, forKey: hogeKey)
}
//読み込み
func loadPerson() -> [Person]? {
let jsonDecoder = JSONDecoder()
guard let data = UserDefaults.standard.data(forKey: hogeKey),
let persons = try? jsonDecoder.decode([Person].self, from: data) else {
return nil
}
return persons
}
テスト
//テスト
savePerson(persons: some_person)
var loaded_person = loadPerson()
//要素追加
loaded_person?.append(Person(name: "Grand", message: "I am new.."))
savePerson(persons: loaded_person!)
loadPerson()