сохранение массива объектов внутри объекта в Swift

Я новичок в быстром и пытаюсь сохранить данные. Я создал класс под названием «Студенты», в котором я храню основные свойства студента, такие как имя и массив объектов расписания. Расписание — это еще один класс, который содержит счетчик для каждого экземпляра расписания.

class Students: NSObject, NSCoding{

var name: String = ""
var schedule = [Schedule]()

static let DocumentsDirectory = NSFileManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask).first!
static let ArchiveURL = DocumentsDirectory.URLByAppendingPathComponent("students")

struct PropertyKey {
    static let nameKey = "name"
    static let scheduleKey = "schedule"
}



init(name: String, schedule: [Schedule]){
    self.name = name
    self.schedule = schedule

    super.init()
}

init(name: String)
{
    self.name = name

    super.init()
}


func addClass(className: String){
    let scheduleItem = Schedule()
    scheduleItem.scheduleName = className
    schedule.append(scheduleItem)
}

func encodeWithCoder(aCoder: NSCoder) {
    aCoder.encodeObject(name,forKey: PropertyKey.nameKey)
    aCoder.encodeObject(schedule, forKey: PropertyKey.scheduleKey)
}

required convenience init?(coder aDecoder: NSCoder){
    let name = aDecoder.decodeObjectForKey(PropertyKey.nameKey) as! String
    let schedule = aDecoder.decodeObjectForKey(PropertyKey.scheduleKey) as! [Schedule]
    self.init(name: name, schedule: schedule)
}

}

class Schedule{

    var counter = 0
    var scheduleName: String = ""

    func increase()
    {
        counter += 1
    }

    func reset()
    {
        counter = 0
    }

}

Моя проблема в том, что когда я вызываю свой метод сохранения

func save(){
    let isSuccessfulSave = NSKeyedArchiver.archiveRootObject(students, toFile: Students.ArchiveURL.path!)

    if !isSuccessfulSave {
        print("Failed to save meals...")
    }
}

Я получаю ошибку из строки

aCoder.encodeObject(schedule, forKey: PropertyKey.scheduleKey)

Почему он не дает мне сохранить массив объектов расписания?


person Dustin Broeder    schedule 24.04.2016    source источник
comment
В чем ошибка?   -  person ryantxr    schedule 25.04.2016
comment
Вот ошибка, которую я получил. Behavior Tracker[28452:868887] *** NSForwarding: предупреждение: объект 0x7ffe3ae00fa0 класса 'Behavior_Tracker.Schedule' не реализует методSignatureForSelector: -- проблема впереди Нераспознанный селектор -[Behavior_Tracker.Schedule replaceObjectForKeyedArchiver:]   -  person Dustin Broeder    schedule 25.04.2016