I am trying to save a simple struct in UserDefaults
, but I get an error:
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Attempt to insert non-property list object...
Here is the struct:
struct saveStruct : Identifiable, Equatable {
var id = UUID()
var label : String
}
Here is the class that will save the struct:
class Game : ObservableObject {
@Published var structArray : [saveStruct]
let key = "structKey"
let defaults = UserDefaults.standard
init(){
structArray = defaults.object(forKey: key) as? [saveStruct] ?? []
}
func saveStructs() {
structArray.append(saveStruct(label: "newStruct"))
defaults.set(structArray, forKey: key)
}
}
And here's the view:
struct view : View {
@StateObject var game = Game()
var body : some View {
ZStack{
Button{
game.saveStructs()
} label: {
Text("Add to and Save structs")
}
}
}
}
I'd greatly appreciate any ideas on how to get around this. Thank you!