2016-05-10 5 views
0

У меня две модели; Contact и Group, а также архивирование/удаление их данных через NSCoder. Рассмотрим это:Невозможно присвоить значение типа SomeObject для SomeObject?

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

Это идет очень хорошо, но когда я пытаюсь использовать контакт в моей группе модели, она просто путает плохо = дает эту ошибку «Невозможно присвоить значение типа КОНТАКТНАЯ?»;

Скажите, пожалуйста, что мне делать, поскольку у меня нет всех параметров для инициализации контактов в целом. Заранее спасибо :)

+0

Ваше объявление переменной может быть просто «var contact: Contact» в вашей модели «Group». Кроме того, вы вызвали свой класс 'contact', но использовали' Contact' в 'group', но я думаю, что это просто опечатка? – stefandouganhyde

+0

это просто испортится плохо? Что именно происходит? – CW0007007

+0

@stefandouganhyde Да typo .. fixed –

ответ

1

Вы переменная декларация должна быть

var contact: Contact 

Это, по существу, говорит о том, что класс группа должна иметь не опциональный переменную типа Contact, что означает, что вы должны установить эту переменную в non-nil Contact во время инициализации.

+0

Отлично! Спасибо за ответ. Кроме того, если вы можете указать ссылку на официальную документацию, где это указано, будет огромный плюс :) –

+1

Документально-мудрый, я думаю, это был бы лучший бит: https://developer.apple.com/library/ios /documentation/Swift/Conceptual/Swift_Programming_Language/Initialization.html#//apple_ref/doc/uid/TP40014097-CH18-ID212 – stefandouganhyde