无法使用UserDefaults从自定义类中保存数据不同我有2个类

时间:2017-12-02 21:45:39

标签: xcode userdefaults

这个问题与 - Saving custom SWIFT class with NSCoding to UserDefaults并不相同,因为有两个类相互连接,我不知道为它们实现NSCoding。我是初学者我已经尝试了超过6个小时来解决这个问题。顺便说一句,这不是重复,因为这里的所有解决方案都已过时。我在我的应用程序中有2个主要的自定义类(超类和子类),并且我想使用UserDefaults,因此我可以永久保存数据。

第一堂课:

class Day { 
    var dayName: String
    var subjects: [Subject]?
    init(dayName: String) {
       self.dayName = dayName
    }
}

第二节课:

class Subject: Day {
    var subjectName: String
    var startsAt: String?
    init(dayName: String,subjectName: String) {
       self.subjectName = subjectName
       super.init(dayName: dayName)
    }    
}

我尝试像这样保存Subject类的实例:

UserDefaults.standard.set(Subject(dayName: "Monday",subjectName: "Programming"), forKey: "subject")
    let savedSubject = UserDefaults.standard.object(forKey: "subject") as? Subject
    print(savedSubject!.subjectName)

然后当我运行应用程序时,我得到一个崩溃说 -

  

由于未捕获的异常而终止应用   ' NSInvalidArgumentException',原因:'尝试插入非属性   列表对象School_Class_Scedule.Subject为关键主题'

我做了很多研究,发现我应该将主题转换为NSData,但我不知道如何在XCode 9中使用swift 3或4。 任何帮助将非常感激。感谢您拯救我的生命,帮助我成为现实的梦想。

0 个答案:

没有答案