gpt4 book ai didi

ios - 如何在 swift 3 的其他功能中使用服务器响应和数据

转载 作者:行者123 更新时间:2023-11-30 12:13:34 24 4
gpt4 key购买 nike

正在向服务器发出发布请求,服务器会响应一些数据,正在将收到的数据存储在名为 json 的变量中,现在正在尝试从其他函数访问此变量,但出现错误:“使用未解析的标识符“json”
这是代码,以防您需要它

    @IBAction func Login(_ sender: UIButton) {
guard let url = URL(string: "url was here..lol") else {return}
var request = URLRequest(url: url)
request.httpMethod = "POST"
let postString = "data to be posted"
print(postString)
request.httpBody = postString.data(using: .utf8)
let task = URLSession.shared.dataTask(with: request) { data, response, error in
if let response = response {
print(response)
}
if let data = data {
do {
let json = try? JSONSerialization.jsonObject(with: data, options: []) as! [String: Any]
let token = json?["access_token"] as! String
print (json)

}
}
}
task.resume()

}

最佳答案

您需要在类级别上声明要在函数之间共享的变量,以便类中的每个函数都可以访问它们。 token 是具有此实现的类的实例属性,因此每个类实例都有自己的名为 token 的变量,可以在类内的任何位置访问该变量。

class MyViewController: UIViewController {
var token = ""

@IBAction func Login(_ sender: UIButton) {
guard let url = URL(string: "url was here..lol") else {return}
var request = URLRequest(url: url)
request.httpMethod = "POST"
let postString = "data to be posted"
print(postString)
request.httpBody = postString.data(using: .utf8)
let task = URLSession.shared.dataTask(with: request) { data, response, error in
if let response = response {
print(response)
}
if let data = data {
guard let json = (try? JSONSerialization.jsonObject(with: data, options: [])) as? [String: Any] else {return}
guard let receivedToken = json["access_token"] as? String else {return}
self.token = receivedToken
otherFunction()
}
}
task.resume()
}

func otherFunction(){
print(token)
}
}

关于ios - 如何在 swift 3 的其他功能中使用服务器响应和数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45710218/

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