如何在Swift中设置NSURLSession实例变量的委托?

时间:2014-10-12 23:24:16

标签: swift nsurlsession

NSURLSession作为类的实例变量,因此我需要在类'init方法中实例化它。

我想在实例化中将委托设置为self,但在致电self之前我无法使用super.init(),我无法呼叫super.init()直到我实例化所有内容,我需要在实例化中设置委托。

如何将委托设置为self?似乎没有单独的setDelegate()函数。

1 个答案:

答案 0 :(得分:0)

NSURLRequest中的委托不是读/写变量(您只能请求它)。你必须在启动时设置它。以下是我解决问题的方法:

在类中声明变量时,请使用以下代码:

var session: NSURLSession = NSURLSession()

然后,在您致电super.init()后,再次启动session,并将委托设置为自己,如下所示:

init() {
        super.init()

        session = NSURLSession(configuration: NSURLSessionConfiguration.ephemeralSessionConfiguration(), delegate: self, delegateQueue: NSOperationQueue.mainQueue())
    }

希望有所帮助!

Swift 3的更新:

像往常一样,Swift 3已经简化了这一点,你现在可以简单地做到

let session = URLSession(configuration: .ephemeral, delegate: self, delegateQueue: OperationQueue.main)