Swift Multi-arg 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给出的解决scheme,但他们没有为我工作。
提前致谢。
你的方法有点改变:
func didReceiveRequestToken(ticket:OAServiceTicket,andData data:NSData){ }
select器是:“didReceiveRequestToken:andData:”
你的来电:
dataFetcher?.fetchDataWithRequest(requestTokenRequest, delegate: self, didFinishSelector:"didReceiveRequestToken:andData:", didFailSelector:"didFailOAuth:andError:") // Make the same with this.
确保你的代码有这个方法。
可能的是,您忘记在方法实现前使用@objc
:
@objc func didReceiveRequestToken(ticket:OAServiceTicket,data:NSData) { ....
当目标方法没有在从NSObject
派生的类中定义时(即使用纯Swift类),这是必需的。