Shahar Melamed
Shahar Melamed

Reputation: 1734

Save array of items in UserDefaults - iOS 12

I want to save an array of TreeWithPos objects in UserDefaults. Every solution I've found (like Data object) didn't work in iOS 12. What can I do? I've tried this:

try? defaults.set(NSKeyedArchiver.archivedData(withRootObject: treesArr, requiringSecureCoding: false), forKey: "trees")

Upvotes: 0

Views: 377

Answers (1)

Shehata Gamal
Shehata Gamal

Reputation: 100541

You can try using Codable protocol with JSONEncoder() & JSONDecoder()

struct SaveItem : Codable {

    var name:String
}

//

let arr = [SaveItem(name: "name1"),SaveItem(name: "name2")]

do {

    // write

    var data  = try JSONEncoder().encode(arr)

    UserDefaults.standard.set(data, forKey: "Key")

    // read

    let content = UserDefaults.standard.data(forKey: "Key")

    let saved = try JSONDecoder().decode([SaveItem].self, from: content!)

    print(saved)

 }
 catch {

      print(error)
  }

Upvotes: 2

Related Questions