我观看了youtube上的一个教程,并尝试了该教程。然后我写
运动场文件中的代码,但没有任何结果,但是没有错误。
因此,我在XCode中创建了一个新项目。然后将一个Button添加到Main.StoryBoard并将UI连接到代码。完成所有必要的操作后,我在模拟器中运行了项目,一切顺利,并且可以看到完成处理程序中的所有工作。以下是XCode项目中的代码。
@IBAction func doNetwork(_ sender: UIButton) {
print("start network jobs...")
// url
let url: URL! = URL(string: "http://192.168.0.12/swnet.php")
URLCache.shared = URLCache(memoryCapacity: 0, diskCapacity: 0, diskPath: nil)
// url session
let session = URLSession.shared
let task: URLSessionDataTask = session.dataTask(with: url, completionHandler: {
(data, response, error) in
print("Handler")
if let respData = data {
print("Data")
print(respData)
}
if let resp = response {
print("Resp")
print(resp)
}
if let err = error {
print("Error")
print(err)
}
})
task.resume()
}
以下是操场上的代码。
// url
let url: URL! = URL(string: "http://192.168.0.12/swnet.php")
URLCache.shared = URLCache(memoryCapacity: 0, diskCapacity: 0, diskPath: nil)
// url session
let session = URLSession.shared
let task: URLSessionDataTask = session.dataTask(with: url, completionHandler: {
(data, response, error) in
print("Handler")
if let respData = data {
print("Data")
print(respData)
}
if let resp = response {
print("Resp")
print(resp)
}
if let err = error {
print("Error")
print(err)
}
})
task.resume()
最佳答案
您需要告诉Playground继续执行足够长的时间,以完成异步代码。要做到这一点:
import PlaygroundSupport
PlaygroundPage.current.needsIndefiniteExecution = true
从Apple's docs on this property:
默认情况下,将执行所有顶级代码,然后执行
终止。使用异步代码时,请启用不确定
执行以允许执行在结束后继续
游乐场的顶层代码已到达。反过来,这提供了线程
并回调执行时间。