This question already has answers here:
How do I run Asynchronous callbacks in Playground
(8个答案)
三年前关闭。
我是斯威夫特的新手,我已经学会了基本语法,我正在尝试做更高级的事情。
我第一次尝试使用下面的代码是对URLhttp://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也没有,知道哪里出了问题吗?

最佳答案

你在操场上运行,你需要做一些额外的工作来运行异步任务。
首先,导入xcPlayword:

import XCPlayground

然后,在操场的尽头,加上这一行:
XCPlaygroundPage.currentPage.needsIndefiniteExecution = true

这将使操场保持运行,以便它可以等待您的完成块发生。
对于Xcode 8:
import PlaygroundSupport

PlaygroundPage.current.needsIndefiniteExecution = true

关于swift - swift 2新手:dataTaskWithRequest回调未执行? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33939622/

10-09 03:49