Swift 使用';连接(didReceive:)&x27;

Swift 使用';连接(didReceive:)&x27;,swift,swift3,nsurlconnectiondelegate,xcode8,Swift,Swift3,Nsurlconnectiondelegate,Xcode8,此代码返回错误: “connection(uquo:didReceive:)”的用法不明确 我参考了GitHub上Apple的官方进化线程,我尊重语法,但不起作用: NSURLConnectionDataDelegate是一种协议,您不能使用NSURLConnectionDataDelegate.connection(uu:didReceive:)创建选择器,您必须使用NSURLConnectionDataDelegate的实现,如: static let didReceiveResponseS

此代码返回错误:

“connection(uquo:didReceive:)”的用法不明确

我参考了GitHub上Apple的官方进化线程,我尊重语法,但不起作用:


NSURLConnectionDataDelegate
是一种协议,您不能使用
NSURLConnectionDataDelegate.connection(uu:didReceive:)
创建选择器,您必须使用NSURLConnectionDataDelegate的实现,如:

static let didReceiveResponseSelector : Selector = #selector((NSURLConnectionDataDelegate.connection(_:didReceive:)) as (NSURLConnectionDataDelegate) ->(NSURLConnection,URLResponse) -> ())
然后您可以创建如下选择器:

class YourDelegateImplementation: NSURLConnectionDataDelegate {
     public func connection(_ connection: NSURLConnection, didReceive data: Data) {
     }
}

不要强制转换选择器:

let yourDelegate: YourDelegateImplementation = YourDelegateImplementation()
let yourSelector : Selector = #selector(yourDelegate.connection(_:didReceive:))
还值得注意的是,委托函数
connection(\uconnection:NSURLConnection,didReceive challenge:URLAuthenticationChallenge)
已被弃用,取而代之的是
连接(\uconnection:NSURLConnection,willSendRequestFor challenge:URLAuthenticationChallenge)
已解决,只需添加“:


不,其他委托也可以,因此此委托也必须可以,并且您的代码不在此#选择器上工作(NSURLConnectionDataDelegate.ConnectionIDFinishLoading(35;:)不幸的是,使用
as
强制转换消除歧义对协议中声明的方法不起作用。请检查。很抱歉,我需要didReceive数据的选择器:数据您混淆了NSURLConnectionDataDelegate和NSURLConnectionLegate
let didReceiveResponseSelector = #selector(NSURLConnectionDelegate.connection(_:didReceive:))
    static let didReceiveResponseSelector : Selector = #selector((NSURLConnectionDataDelegate.connection(_:didReceive:)) as ((NSURLConnectionDataDelegate) -> (NSURLConnection,URLResponse) -> void)?)