У меня есть класс A, определенный в ObjC и классе B - подклассе A, определенном в Swift. Реализация выглядит следующим образом:Должен вызвать назначенный инициализатор суперкласса 'UIViewController'
Класс A
- (id)init {
return [super init];
}
Класс B
init(url: NSURL) {
super.init()
let request = NSMutableURLRequest(URL: url)
request.setValue(valueID, forHTTPHeaderField: "value_ID")
urlRequest = request
}
convenience init(recoveryURL: NSURL) {
self.init(url: recoveryURL)
}
required public init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
Класс B инициализируется следующим образом (так как ее загруженный из файла XIb):
ClassB *b = [[ClassB alloc] initWithNibName:@"ClassA" bundle:nil];
Ошибка отображается на super.init()
строка внутри init(url: NSURL)
класса B. Я пытаюсь использовать инициализаторы удобства. Я был бы признателен, если бы кто-нибудь мог указать мне, где я иду не так?
Ваш инициализатор не вызывает назначенный инициализатор суперкласса - обратитесь к разделу «Делегирование инициализатора для типов классов» в книге Swift. Вам нужно будет передать файл nib для вашего удобства. Инициализатор или, по крайней мере, ваше удобство. Инициализатор определяет кончик, когда он вызывает суперкласс initWithNibName – Paulw11