从 NSURLSessionTaskDelegate 获取数据

Getting data from NSURLSessionTaskDelegate

我正在尝试将 NSURLSessionDataTaskDelegate 一起使用,但我找不到一种方法来转换 didReceiveData 获得的数据方法变成一个字符串。

这是我正在使用的代码,我遇到的问题是我得到了一些数据,但是当我尝试将这些数据转换成字符串时,我得到了 nil,而预期的结果将是我请求的页面的来源。

class ViewController: UIViewController, NSURLSessionDataDelegate {

    var session:NSURLSession?
    var data = NSMutableData()

    override func viewDidLoad() {
        super.viewDidLoad()

        let sessionConfiguration = NSURLSessionConfiguration.defaultSessionConfiguration()
        session = NSURLSession(configuration: sessionConfiguration, delegate: self, delegateQueue: NSOperationQueue.mainQueue())
        session!.dataTaskWithRequest(NSURLRequest(URL: NSURL(string: "http://www.google.com")!)).resume()
    }

    func URLSession(session: NSURLSession, task: NSURLSessionTask, didCompleteWithError error: NSError?){
        var str = NSString(data: NSData(data: self.data), encoding: NSUTF8StringEncoding)
        println(data) // IT PRINTS DATA CONTENT
        println(str) // IT PRINTS nil :(
    }

    func URLSession(session: NSURLSession, dataTask: NSURLSessionDataTask, didReceiveData data: NSData){
        self.data.appendData(data)
    }

很可能接收到的字符串数据不是 UTF8 编码的。试试 NSASCIIStringEncoding。