Не можете присвоить значение типа SomeObject для SomeObject?
У меня есть две модели; Связаться и сгруппировать, и архивирую / разархивирую свои данные через NSCoder. Учти это:
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)
}
}
Это действительно хорошо, но когда я пытаюсь использовать контакт в моей групповой модели, он просто плохо работает = выдает эту ошибку "Не удается присвоить значение типа Контакт для контакта?";
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)
}
}
Скажите, пожалуйста, что мне делать, так как у меня нет всех параметров для инициализации контактов в целом. Заранее спасибо:)
1 ответ
Решение
Ваше объявление переменной должно быть
var contact: Contact
По сути, это говорит о том, что класс группы должен иметь не необязательную переменную типа Contact
, это означает, что вы должны установить эту переменную не ноль Contact
во время инициализации.