2015-07-10 2 views
2

Когда я открыл свой проект, который уже имел быстрые классы на Xcode 6.3.2, он показывает ошибку. Я бы хотел, чтобы вы помогли мне решить эту проблему. Спасибо.Инициализатор не переопределяет инициализатор из своей ошибки суперкласса в swift

enter image description here

enter image description here

+0

Возможно, вы пытаетесь использовать компилятор, который несовместим с вашим текущим быстрым синтаксисом.Убедитесь, что ваш быстрый код обновлен. – boidkan

ответ

6

У вас есть несколько различных ошибок здесь; давайте иметь дело с ними по одному на время.

Переопределения удобства инициализатору
Per Быстрой документации от компании Apple:

если вы пишете подкласс инициализатор, который соответствует суперклассу удобство инициализатору, что суперкласс удобства инициализатор никогда не может быть вызван непосредственно подкласс , в соответствии с правилами, описанными выше, в делеризации инициализации для типов классов. Поэтому ваш подкласс не является (строго говоря), обеспечивающим переопределение инициализатора суперкласса. В результате вы не записываете модификатор переопределения при предоставлении соответствующей реализации инициализатора удобства суперкласса.

Знак override, и вы должны быть установлены. Говоря о множествах ...

Модернизированный интерфейс для сенсорных методов в Swift 1,2
Paul Solt из iphonedev.tv охватывает это в Swift 1.2 fixes and breaks a few things: you should be excited!, и я рекомендую вам прочитать весь пост (не говоря уже о релизе отмечается, что он связывается с) , но, кроме этого, NSSet был заменен на родным типом Set. Как он говорит:

Fix: Вам необходимо обновить сигнатуру метода (то есть: вся первая линия) на следующее:

override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) { 

Он также отмечает, что есть не является anyObject() в Set, поэтому вам придется работать с этим интерфейсом.

Надеюсь, что это поможет!

2

Swift

Вам не нужно в override ключевом слове в convenience инициализаторе, потому что вы не можете переопределить такой инициализатор.

Fix: удалить override ключевое слово.

convenience init() { 
    self.init(frame: CGRectZero) 
} 

Кроме того, либо init()является назначенным инициализатор (в STBTableViewIndex), либо нет. Если это так, замените convenience override init() на required init(), что влечет за собой override.