2016-02-02 4 views
0

У меня есть класс 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. Я пытаюсь использовать инициализаторы удобства. Я был бы признателен, если бы кто-нибудь мог указать мне, где я иду не так?

+0

Ваш инициализатор не вызывает назначенный инициализатор суперкласса - обратитесь к разделу «Делегирование инициализатора для типов классов» в книге Swift. Вам нужно будет передать файл nib для вашего удобства. Инициализатор или, по крайней мере, ваше удобство. Инициализатор определяет кончик, когда он вызывает суперкласс initWithNibName – Paulw11

ответ

-1

Рассмотрим положить следующий код в viewDidLoad:

let request = NSMutableURLRequest(URL: url) 
request.setValue(k_strOfferingIdValueHeader, forHTTPHeaderField: "offering_id") 
urlRequest = request 

Обычно это чистейший вариант.

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