2016-04-18 2 views
0

Я использую руководство Apple для быстрого сохранения данных, но когда я пытаюсь скомпилировать его, он говорит мне, что это не соответствует. На основе руководства Apple и другого кода это должно быть.Класс не соответствует протоколу NSCoding

// MARK: NSCoding 

func encodeWithCoder(aCoder: NSCoder) { 
    aCoder.encodeObject(firstName, forKey: "firstName") 
    aCoder.encodeObject(lastName, forKey: "lastName") 
    aCoder.encodeObject(phoneNumber, forKey: "phoneNumber") 
    aCoder.encodeObject(email, forKey: "email") 
    aCoder.encodeObject(address, forKey: "address") 
} 

required convenience init?(coder aDecoder: NSCoder) { 
    firstName = aDecoder.decodeObjectForKey("firstName") as! String 
    lastName = aDecoder.decodeObjectForKey("lastName") as! String 
    phoneNumber = aDecoder.decodeObjectForKey("phoneNumber") as! String 
    email = aDecoder.decodeObjectForKey("email") as! String 
    address = aDecoder.decodeObjectForKey("addressq") as! String 

    self.init(phoneNumber: phoneNumber, firstName: firstName, lastName: lastName, email: email, address: address) 
} 

Так что я просто не уверен, почему это не соответствует, когда я могу запустить программу Apple в порядке.

EDIT: Таким образом, проблема заключается в том, что у меня не было класса, унаследованного от NSObject. Это решило проблему.

+0

Можете ли вы показать вашу 'линию class' определения? – Paulw11

ответ

0

Никакие ошибки здесь:

class Dog { 
    var firstName: String 

    func encodeWithCoder(aCoder: NSCoder) { 
     aCoder.encodeObject(firstName, forKey: "firstName") 
    } 

    init(firstName: String) { 
     self.firstName = firstName 
    } 

    required convenience init?(coder aDecoder: NSCoder) { 
     let x = aDecoder.decodeObjectForKey("firstName") as! String 

     self.init(firstName: x) 
    } 

} 

var d = Dog(firstName: "Rover") 
+0

Ваш класс не указывает, что он использует протокол NSCoding. Он должен сделать это, а также наследовать от NSObject, чтобы быть допустимым примером – Paulw11

Смежные вопросы