0

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!

Timmy
  • 4,098
  • 2
  • 14
  • 34
TrappinNachos
  • 87
  • 1
  • 7

0 Answers0