在 UserDefaults 中保存项目数组 - iOS 12

Save array of items in UserDefaults - iOS 12

我想在 UserDefaults 中保存一个 TreeWithPos 对象数组。我发现的每个解决方案(如数据对象)在 iOS 12 中都不起作用。 我能做什么? 我试过这个:

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

您可以尝试将 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)
  }