0

I have a struct and I am trying to save it into userDefaults

Here is my code..

struct savedCategory {
    var images = String()
    var imageLabel = String()
}


class SavedCategoryModel {
    static var categoryModel: [savedCategory] = []
}

Here is how i try to save it

class UserDefaultsConfig {

func saveData() {
    let defaults = UserDefaults.standard
    defaults.set(SavedCategoryModel.categoryModel, forKey: "SavedStringArray")
}

func showList() {
    let defaults = UserDefaults.standard
    SavedCategoryModel.categoryModel = defaults.stringArray(forKey: "SavedStringArray")!
}

}

I have an error

Cannot assign value of type '[String]' to type '[savedCategory]'

How can i fix it?

Joakim Danielson
  • 43,251
  • 5
  • 22
  • 52
kesape
  • 149
  • 8
  • `.categoryModel` isn't an array of `String`, it's an array of `savedCategory` – flanker May 26 '22 at 17:10
  • Make your savedCategory conform to Codable. Use this for saveData(): defaults.set(try? PropertyListEncoder().encode(SavedCategoryModel.categoryModel), forKey:"SavedStringArray") And this for reading in showList(): if let data = defaults.value(forKey:"SavedStringArray") as? Data { SavedCategoryModel.categoryModel = try! PropertyListDecoder().decode(Array.self, from: data) } – Asteroid May 26 '22 at 17:20

0 Answers0