gpt4 book ai didi

ios - 在 Swift 中从 URL 获取数据

转载 作者:搜寻专家 更新时间:2023-10-31 19:30:14 24 4
gpt4 key购买 nike

我正在尝试从服务器下载 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()

这应该打印“Everyone is fine~”或“Failed”,但都没有出现...我试图查看 statusCode,所以我将 print(statusCode) 放入 task 但同样没有打印任何内容。

这是我的 Playground 截图:

enter image description here

+

CFRunLoop in Swift Command Line Program

这就是我一直在寻找的答案,因为我正在处理 OS X 命令行应用程序(我将所有这些都移到 Playground 上看看会发生什么)。如果你和我一样,请勾选这个

最佳答案

您看不到任何内容,因为 dataTaskWithRequest 是异步的,并且您的 playground 在“task.resume()”之后就停止了。异步任务没有得到要运行的更改。

你可以在 task.resume 之后最后调用它:

XCPlaygroundPage.currentPage.needsIndefiniteExecution = true

还有“导入 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

这篇文章可能会澄清更多: How do I run Asynchronous callbacks in Playground

编辑:

在 Swift 3 中,这发生了一点变化。

import PlaygroundSupport
PlaygroundPage.current.needsIndefiniteExecution = true

关于ios - 在 Swift 中从 URL 获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35426305/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com