swift 2新手:dataTaskWithRequest回调未执行?

时间:2015-11-26 13:11:32

标签: swift swift2

我是Swift的新手,我已经学会了基本的语法,并且我正在努力做更多高级的东西。 我对代码的第一次尝试是在URL http://www.test.com上执行HTTP请求并获取响应:

//: Playground - noun: a place where people can play

import UIKit

var url : NSURL = NSURL(string: "http://www.test.com")!
var request: NSURLRequest = NSURLRequest(URL: url)
let config = NSURLSessionConfiguration.defaultSessionConfiguration()
let session = NSURLSession(configuration: config)
var responseString:NSString?;

let task : NSURLSessionDataTask = session.dataTaskWithRequest(request, completionHandler: {(data, response, error) in
    print("toto")
    if error != nil {
        print("error=\(error)")
        return
    } else {
        print("response = \(response!)")
        responseString = NSString(data: data!, encoding: NSUTF8StringEncoding)!
        print("responseString = \(responseString)")
    }

});

task.resume()
print (responseString)

当我在Xcode中运行代码时," toto"没有打印,responseString是零,任何关于出了什么问题的想法?

1 个答案:

答案 0 :(得分:4)

您在游乐场中运行此操作,并且需要做一些额外的工作才能使异步任务运行。

首先,导入XCPlayground:

import XCPlayground

然后,在游乐场的尽头,添加以下行:

XCPlaygroundPage.currentPage.needsIndefiniteExecution = true

这样可以让游乐场继续执行,这样它就可以等待你的完成块发生。

对于Xcode 8:

import PlaygroundSupport

PlaygroundPage.current.needsIndefiniteExecution = true