Swift Multi-arg Selector не получает вызов
Вот рабочий код, который отлично работает в Objective-C,
[dataFetcher fetchDataWithRequest:authorizeRequest
delegate:self
didFinishSelector:@selector(didReceiveRequestToken:data:)
didFailSelector:@selector(didFailOAuth:error:)];
Он вызывает оба метода в Objective-C.
Но когда я использую Selector в Swift, он не работает.
dataFetcher?.fetchDataWithRequest(requestTokenRequest,
delegate: self,
didFinishSelector:Selector("didReceiveRequestToken:data:"),
didFailSelector: Selector("didFailOAuth:error:"))
Здесь метод, который я вызываю,
func didReceiveRequestToken(ticket:OAServiceTicket,data:NSData){
}
Я уже использовал решения, данные на StackOverFlow, но они не работали для меня.
Спасибо в Advance.
Ответы
Ответ 1
В вашем методе очень немного изменений:
func didReceiveRequestToken(ticket:OAServiceTicket,andData data:NSData){
}
Селектор: "didReceiveRequestToken: andData:"
Ваш звонок:
dataFetcher?.fetchDataWithRequest(requestTokenRequest,
delegate: self,
didFinishSelector:"didReceiveRequestToken:andData:",
didFailSelector:"didFailOAuth:andError:") // Make the same with this.
Убедитесь, что ваш код имеет этот метод.
Ответ 2
Возможно, вы забываете использовать @objc
перед реализацией вашего метода:
@objc func didReceiveRequestToken(ticket:OAServiceTicket,data:NSData) {
....
Это требуется, когда целевой метод не определен внутри класса, полученного из NSObject
(т.е. с классами pure-Swift).