2015-11-15 3 views
0

Работая с этим учебником по приложению building a text to speech app tutorial и выполняйте функцию быстрого 1.2-> swift 2.0.Инициализатор не переопределяет назначенный инициализатор из своего суперкласса, Swift 2.0

В демонстрационном проекте есть класс, в котором Xcode 7.1.1 под IOS 10.11.1 не нравится, что дает мне ошибку. «Инициализатор не переопределяет назначенный инициализатор из своего суперкласса» в инструкции override init(), за которой следует ошибка «Должен вызывать назначенный инициализатор UISlider суперкласса».

Хорошо, скорее новый для Swift; и совершенно там, где я начинаю исправить это, я немного потерял меня.

class CustomSlider: UISlider { 

var sliderIdentifier: Int! 

override init() { <--- error here 
    super.init() <--- error here 

    sliderIdentifier = 0 
} 


required init?(coder aDecoder: NSCoder) { 
    super.init(coder: aDecoder) 

    sliderIdentifier = 0 
} 

} 

Что должен сказать этот фрагмент кода?

ответ

4

С UISlider не определяет или не наследует init() как назначенный инициализатор, вы не можете его назвать из своего подкласса init.

class CustomSlider: UISlider { 

    var sliderIdentifier: Int! 

    required init() { 
     super.init(frame: CGRect.zero) 
     sliderIdentifier = 0 
    } 


    required init?(coder aDecoder: NSCoder) { 
     super.init(coder: aDecoder) 
     sliderIdentifier = 0 
    } 

} 

В этом случае, вы могли бы вынести инициализацию sliderIdentifier и просто наследует все UISlider сек инициализаторов:

class CustomSlider: UISlider { 

    var sliderIdentifier: Int! = 0 

} 

Для получения более подробной информации читайте раздел «Места Инициализаторов и удобство Инициализаторы» в The Swift Programming Language.

Смежные вопросы