Когда я открыл свой проект, который уже имел быстрые классы на Xcode 6.3.2, он показывает ошибку. Я бы хотел, чтобы вы помогли мне решить эту проблему. Спасибо.Инициализатор не переопределяет инициализатор из своей ошибки суперкласса в swift
ответ
У вас есть несколько различных ошибок здесь; давайте иметь дело с ними по одному на время.
Переопределения удобства инициализатору
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, поэтому вам придется работать с этим интерфейсом.
Надеюсь, что это поможет!
Swift
Вам не нужно в
override
ключевом слове вconvenience
инициализаторе, потому что вы не можете переопределить такой инициализатор.
Fix: удалить override
ключевое слово.
convenience init() {
self.init(frame: CGRectZero)
}
Кроме того, либо init()
является назначенным инициализатор (в STBTableViewIndex), либо нет. Если это так, замените convenience override init()
на required init()
, что влечет за собой override
.
Возможно, вы пытаетесь использовать компилятор, который несовместим с вашим текущим быстрым синтаксисом.Убедитесь, что ваш быстрый код обновлен. – boidkan