从NSURLSessionTaskDelegate获取数据

时间:2015-04-27 13:00:22

标签: ios swift nsurlsession

我正在尝试将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)
    }

1 个答案:

答案 0 :(得分:1)

最有可能收到的字符串数据不是UTF8编码的。尝试NSASCIIStringEncoding。