我正在尝试从服务器下载JSON文件,并按照以下教程进行操作(http://www.learnswiftonline.com/mini-tutorials/how-to-download-and-read-json/)
首先,我尝试了“检查响应”部分(我添加了一些部分以查看出了什么问题)
let requestURL: NSURL = NSURL(string: "http://www.learnswiftonline.com/Samples/subway.json")!
let urlRequest: NSMutableURLRequest = NSMutableURLRequest(URL: requestURL)
let session = NSURLSession.sharedSession()
let task = session.dataTaskWithRequest(urlRequest) {
(data, response, error) -> Void in
let httpResponse = response as! NSHTTPURLResponse
let statusCode = httpResponse.statusCode
if (statusCode == 200) {
print("Everyone is fine, file downloaded successfully.")
} else {
print("Failed")
}
task.resume()
Run Code Online (Sandbox Code Playgroud)
这应该打印“每个人都很好〜”或“失败”,但都不会出现...我试图查看statusCode,所以我放进去了print(statusCode),task但是什么也没打印。
这是我的操场截图:
+
这是我一直在寻找的答案,因为我正在处理OS X命令行应用程序(我将整个程序移到操场上看看会发生什么)。如果您与我相同,请检查
您看不到任何内容,因为dataTaskWithRequest它是异步的,并且您的 Playground 在“task.resume()”之后停止。异步任务不会运行更改。
您可以在最后调用它task.resume:
XCPlaygroundPage.currentPage.needsIndefiniteExecution = true
Run Code Online (Sandbox Code Playgroud)
还可以“导入 XCPlayground”,如下所示:
import Foundation
import XCPlayground
let requestURL: NSURL = NSURL(string: "http://www.learnswiftonline.com/Samples/subway.json")!
let urlRequest: NSMutableURLRequest = NSMutableURLRequest(URL: requestURL)
let session = NSURLSession.sharedSession()
let task = session.dataTaskWithRequest(urlRequest) {(data, response, error) -> Void in
let httpResponse = response as! NSHTTPURLResponse
let statusCode = httpResponse.statusCode
if (statusCode == 200) {
print("Everyone is fine, file downloaded successfully.")
} else {
print("Failed")
}
}
task.resume()
XCPlaygroundPage.currentPage.needsIndefiniteExecution = true
Run Code Online (Sandbox Code Playgroud)
这篇文章可能会澄清更多: How do I run Asynchronous callbacks in Playground
编辑:
在 Swift 3 中,情况发生了一些变化。
import PlaygroundSupport
PlaygroundPage.current.needsIndefiniteExecution = true
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12259 次 |
| 最近记录: |