SO habe ich zwei Modelle; Kontakt und Gruppe und archivieren/entpacken ihre Daten über NSCoder. Bedenken Sie:Kann Wert von Typ SomeObject zu SomeObject nicht zuweisen?
class Contact
{
var id: Int = default_value
var name: String = ""
var number: String = ""
init?(Id:Int, Name:String, Number:String)
{
self.id = Id
self.name = Name
self.number = Number
super.init()
if Id == default_value{
return nil
}
}
// MARK: NSCoding
func encodeWithCoder(aCoder: NSCoder)
{
aCoder.encodeInteger(id, forKey: "id")
aCoder.encodeInteger(name, forKey: "name")
aCoder.encodeBool(number, forKey: "number")
}
required convenience init?(coder aDecoder: NSCoder)
{
let Id = aDecoder.decodeIntegerForKey("id")
let Name = aDecoder.decodeIntegerForKey("name")
let Number = aDecoder.decodeBoolForKey("number")
self.init(Id:Id, Name:Name, Number:Number)
}
}
Das ist wirklich in Ordnung geht, aber wenn ich versuche, Kontakt in meiner Gruppe Modellen zu verwenden, es vermasselt nur bis schlecht = diesem Fehler „Kontakt Kann nicht zuweisen Wert vom Typ Kontakt?“ Gibt;
class group
{
var id: Int = default_value
var contact = Contact?.self //wont let me declare a Contact
init?(Id:Int, cont:Contact)
{
self.id = Id
self.contact = cont //Cannot assign Value of type Contact to Contact?
super.init()
if Id == default_value{
return nil
}
}
// MARK: NSCoding
func encodeWithCoder(aCoder: NSCoder)
{
aCoder.encodeInteger(id, forKey: "id")
aCoder.encodeInteger(contact, forKey: "contact")
}
required convenience init?(coder aDecoder: NSCoder)
{
let Id = aDecoder.decodeIntegerForKey("id")
let Cont = aDecoder.decodeIntegerForKey("contact")
self.init(Id:Id, cont:Cont)
}
}
Bitte sagen Sie mir, was soll ich tun, da ich nicht alle Parameter müssen Kontakte als Ganzes zu initialisieren. Vielen Dank im Voraus :)
Ihre Variablendeklaration könnte einfach 'var contact: Contact' in Ihrem' Group'-Modell sein. Außerdem hast du deine Klasse 'contact' genannt, aber' Contact' in der 'group', aber ich denke, das ist nur ein Tippfehler? – stefandouganhyde
es vermasselt nur schlecht? Was passiert genau? – CW0007007
@stewandoughyde Ja ein Tippfehler .. behoben –