Swift Multi-arg Selector没有被调用

时间:2015-01-13 13:51:27

标签: ios objective-c swift selector

以下是 Objective-C

中正常运行的代码
[dataFetcher fetchDataWithRequest:authorizeRequest
                         delegate:self
                didFinishSelector:@selector(didReceiveRequestToken:data:)
                  didFailSelector:@selector(didFailOAuth:error:)];

它正在调用 Objective-C 中的两种方法。

但是当我在 Swift 中使用Selector时,它无法正常工作。

dataFetcher?.fetchDataWithRequest(requestTokenRequest,
                    delegate: self,
                    didFinishSelector:Selector("didReceiveRequestToken:data:"),
                    didFailSelector: Selector("didFailOAuth:error:"))

这是我打电话的方法,

func didReceiveRequestToken(ticket:OAServiceTicket,data:NSData){

}

我已经使用StackOverFlow上提供的解决方案,但它们对我没有用。

先谢谢。

2 个答案:

答案 0 :(得分: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.

确保您的代码具有此方法。

答案 1 :(得分:0)

可能您忘记在方法实现前使用@objc

@objc func didReceiveRequestToken(ticket:OAServiceTicket,data:NSData) {

   ....

当在NSObject派生的类中未定义目标方法时(即使用纯Swift类),这是必需的。