【发布时间】:2019-11-11 05:58:46
【问题描述】:
我正在尝试测试这段代码以确保正确解析 JSON,但我遇到的问题是 URLSession 代码块内的任何内容都没有被执行。当我运行程序时,我得到的只是外面的“test2”打印语句。如果有人能帮助我指出正确的方向,将不胜感激,谢谢!
import Foundation
struct BMIInfo: Codable {
let bmi: Double
let more: [String]
let risk: String
}
let url = "http://webstrar99.fulton.asu.edu/page3/Service1.svc/calculateBMI?height=60&weight=156"
let urlObj = URL(string: url)
URLSession.shared.dataTask(with: urlObj!) { (data, response, error) in
let dataAsString = String(data: data!, encoding: .utf8)
let decoder = JSONDecoder()
let jsonresult = try! decoder.decode(BMIInfo.self, from: data!)
let bmi = jsonresult.bmi
let more = jsonresult.more
let risk = jsonresult.risk
print(bmi)
print(dataAsString)
print("test")
}.resume()
print("test2")
【问题讨论】:
-
是控制台应用吗?您的应用程序很可能会在请求完成之前退出。
-
该代码应该可以工作。在 Playground 中,您可能必须添加行
import PlaygroundSupport和PlaygroundPage.current.needsIndefiniteExecution = true。请注意,打印顺序始终首先是"test2",然后是"test" -
您好 Stefan,我没有发现您的代码有任何问题。因此,我在一个新的操场上按原样复制了您的代码。它刚刚奏效。我得到以下输出:
test2 30.463333333333335 Optional("{\"bmi\":30.463333333333335,\"more\":[\"https:\\/\\/www.cdc.gov\\/healthyweight\\/assessing\\/bmi\\/index.html\",\"https:\\/\\/www.nhlbi.nih.gov\\/health\\/educational\\/lose_wt\\/index.htm\",\"https:\\/\\/www.ucsfhealth.org\\/education\\/body_mass_index_tool\\/\"],\"risk\":\"You are obese :(\"}") test我正在使用 Xcode 10.2.1。你在用什么?