Swift NSURLSession在闭包内访问委托

时间:2015-06-25 06:18:25

标签: ios swift delegates nsurlsession

我是新手,所以请耐心等待。我正在使用NSURLSession,我需要访问我在响应完成时定义的委托。

这是我的班级属性

var delegate: APIClientDelegate?

以下是相关部分

    var configuration = NSURLSessionConfiguration.defaultSessionConfiguration()

    var session = NSURLSession(configuration: configuration, delegate: self, delegateQueue:NSOperationQueue.mainQueue())

    var task = session.dataTaskWithRequest(request){
        (data: NSData!, response: NSURLResponse!, error: NSError!) -> Void in
        if error == nil {
            var result = NSString(data: data, encoding: NSASCIIStringEncoding)!
            NSLog("request to %@ result %@", request.URLString, result)
            if let delegate = self.delegate{
                delegate.requestDidSucceed(data)
            } else {
                println("nope")
            }
        }
    }
    task.resume()

一切正常,但我无法访问我的委托委托。我错过了一些简单的东西吗?我一直在谷歌搜索,但问题是我不知道我不知道:/

感谢您的帮助。

编辑说明: 问题是在这种情况下委托是零。这是因为我不明白遵守协议的类必须将委托设置为自己。这是进行预期协议实现的链接,这是我不理解的。

所以在实现协议的类中:

var apiClient: APIClient = APIClient()
apiClient.delegate = self

1 个答案:

答案 0 :(得分:0)

您的代表未定义。

您声明了var类型的委托Optional<APIClientDelegate>,但您从未设置其值。如果您希望它工作,您可以委派var需要指向满足APIClientDelegate协议中设置的要求的类。