Сохранить таблицу с данными из класса - PullRequest
0 голосов
/ 30 июня 2019

Я хотел бы сохранить и перечитать данные, которые находятся в «Курс».Я пытаюсь сегодня с Userdefaults, но это не работает.

Код:

var Cours = [CoursParNiveau]()

Класс:

class CoursParNiveau: NSObject, NSCoding {

    var DateLecon:String?
    var HoraireLecon: String?

    init (Date: String, Horaire: String){
        self.DateLecon = Date
        self.HoraireLecon = Horaire
    }

    func encode(with aCoder: NSCoder) {
        aCoder.encode(DateLecon, forKey: "Date")
        aCoder.encode(HoraireLecon, forKey: "Horaire")
    }

    required init?(coder aDecoder: NSCoder) {
        self.DateLecon = aDecoder.decodeObject(forKey: "Date") as? String
        self.HoraireLecon = aDecoder.decodeObject(forKey: "Horaire") as? String
    }
}

1 Ответ

0 голосов
/ 01 июля 2019

Попробуйте использовать Codable до кодирование / декодирование data для сохранения / извлечения из UserDefaults.

Соответствие CoursParNiveau до Codableи реализуйте enum CodingKeys, чтобы определить пользовательский keys, который вы хотите использовать при кодировании / декодировании , то есть

class CoursParNiveau: Codable {
    var DateLecon: String?
    var HoraireLecon: String?

    enum CodingKeys: String, CodingKey {
        case DateLecon = "Date"
        case HoraireLecon = "Horaire"
    }
}

Сохранение в UserDefaults:

do {
    let data = try JSONEncoder().encode(Cours)
    UserDefaults.standard.set(data, forKey: "CoursParNiveau")
} catch {
    print(error)
}

Извлечение из UserDefaults:

if let data = UserDefaults.standard.data(forKey: "CoursParNiveau") {
    do {
        self.Cours = try JSONDecoder().decode([CoursParNiveau].self, from: data)
    } catch {
        print(error)
    }
}
...