2016-04-18 3 views
0

Ich habe das Apple-Handbuch zum Speichern von Daten in swift verwendet, aber wenn ich versuche, es zu kompilieren, sagt es mir, dass es nicht konform ist. Basierend auf Apple's Guide und anderem Code sollte es sein.Die Klasse entspricht nicht dem NSCoding-Protokoll

// 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) 
} 

Also ich bin einfach nicht sicher, warum es nicht konform ist, wenn ich Apples Programm gut laufen lassen kann.

EDIT: So scheint das Problem zu sein, dass ich meine Klasse nicht von NSObject geerbt hatte. Das hat das Problem gelöst.

+0

Können Sie zeigen Sie Ihre 'CLASS' Definitionszeile? – Paulw11

Antwort

0

Keine Fehler hier:

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

Ihre Klasse gibt nicht an, dass sie das NSCoding-Protokoll annimmt. Es muss dies tun und auch von NSObject erben, um ein gültiges Beispiel zu sein – Paulw11