Как использовать NSUserDefaults для хранения массива пользовательских классов в Swift?

У меня есть собственный класс под названием Person, который хранит различные атрибуты о ком-то, когда они вводят информацию.

class Person {

    // Person dictionary variable
    var name: String?
    var age: String?
    var html_url: String?

    init(json: NSDictionary) { // Dictionary object
        self.name = json["name"] as? String
        self.age = json["age"] as? String
        self.html_url = json["html_url"] as? String // Location of the JSON file
    }
}

Как только словарь создан, он помещается в массив. У меня возникают проблемы при сохранении массива в NSUserDefaults при нажатии кнопки.

personArray.append(newPerson) // newPerson = dictionary of attributes


NSUserDefaults.standardUserDefaults().setObject(personArray, forKey: "personArray")
        NSUserDefaults.standardUserDefaults().synchronize()

Я посмотрел на Как хранить пользовательские объекты в NSUserDefaults и Сохранение пользовательского класса SWIFT с NSCoding в UserDefaults , но мне не повезло, и я нахожу его трудно понять.

Мне, когда я просто пытаюсь сохранить в NSUserDefaults, мне говорят следующее:

Attempt to set a non-property-list object (
    "PersonApp.Person"
) as an NSUserDefaults/CFPreferences value for key personArray

Может ли кто-нибудь помочь мне реально сохранить массив пользовательских объектов (пользовательских словарей) через NSUserDefaults?

8
задан Community 23 May 2017 в 12:26
поделиться