Попытка сохранить массив объектов в UserDefaults - PullRequest
0 голосов
/ 26 октября 2019

я пытаюсь сохранить массив объектов в userdafaults, и я получаю сообщение об ошибке «Попытка установить объект не из списка свойств»

import UIKit

var defaults = UserDefaults()
class Item {
    var title: String = ""
    var done: Bool = false
}

var array = [Item]()


let newTitle = Item()
newTitle.title = "hey"
array.append(newTitle)
let newTitle2 = Item()
newTitle2.title = "hey"
array.append(newTitle2)
let newTitle3 = Item()
newTitle3.title = "hey"
array.append(newTitle3)
let newTitle4 = Item()
newTitle4.title = "hey"
array.append(newTitle4)


defaults.set(array, forKey: "arrays")

1 Ответ

3 голосов
/ 26 октября 2019

В Swift самый разумный способ - принять Codable и сохранить массив в виде списка свойств или JSON

class Item : Codable {
    var title: String = ""
    var done: Bool = false
}

...

do {
   let data = try JSONEncoder().encode(array)
   // or let data = try PropertyListEncoder().encode(array)
   defaults.set(data, forKey: "arrays")
} catch { print(error) }
...