Сохранить массив элементов в UserDefaults - iOS 12 - PullRequest
0 голосов
/ 29 июня 2018

Я хочу сохранить массив объектов TreeWithPos в UserDefaults. Каждое найденное мной решение (например, объект данных) не работало в iOS 12. Что я могу сделать? Я пробовал это:

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

1 Ответ

0 голосов
/ 29 июня 2018

Вы можете попробовать использовать протокол Codable с 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)
  }
...