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).