Не можете присвоить значение типа 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 во время инициализации.

Другие вопросы по тегам