【发布时间】:2019-01-11 17:06:43
【问题描述】:
我正在 Xcode 中的 XCTest 框架内发出 http post 请求,以便对我的应用程序进行简单的 UI 测试。在请求中,返回响应。我无法在 URLSession 任务之外访问该响应,我需要这样做,因为它包含一个必须解码并用于另一个 http post 请求的 JWT。
我已经尝试研究如何做到这一点,但由于我是 Swift 的初学者,因此很难知道正确的路径。我尝试创建一个新的 json 对象并将该响应分配给它在 URLSession 之外,但它只是说它找不到该响应,它超出了范围。
// make HTTP request
let task = URLSession.shared.dataTask(with: request) { data, response, error in
guard let data = data, error == nil else {
print(error?.localizedDescription ?? "No data")
return
}
let responseJSON = try? JSONSerialization.jsonObject(with: data, options: [])
if let responseJSON = responseJSON as? [String: Any] {
print(responseJSON)
}
}
task.resume()
let response = responseJSON as! [String:Any]
预期的结果是我现在在 http 请求之外有我的响应对象,然后我可以对其进行解码。实际结果就是报错:
使用未解析的标识符“responseJSON”
【问题讨论】:
-
您无法访问超出其范围的变量。
-
感谢 rmaddy 的输入。我的问题是如何访问它。
-
您通常会使用完成处理程序
-
感谢您输入 Scriptable。我现在就开始研究。
-
你在声明的地方访问它。