open func setStruct<T: Codable>(_ value: T?, forKey defaultName: String) { let data = try? JSONEncoder().encode(value) set(data, forKey: defaultName) } code example
Example: save struct array to UserDefaults swift
struct Song:Codable {
var title: String
var artist: String
}
var songs: [Song] = [
Song(title: "Title 1", artist: "Artist 1"),
Song(title: "Title 2", artist: "Artist 2"),
Song(title: "Title 3", artist: "Artist 3"),
]
UserDefaults.standard.set(try? PropertyListEncoder().encode(songs), forKey:"songs")
if let data = UserDefaults.standard.value(forKey:"songs") as? Data {
let songs2 = try? PropertyListDecoder().decode(Array<Song>.self, from: data)
}