gpt4 book ai didi

json - Swift 从函数完成中获取值并将其设置为全局变量

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

我试图从函数的竞争中获取变量,并将其转换为全局变量。这是我正在调用的函数:

func getJsonFromUrl(name: String, completion: @escaping (String?)->()) {
//use name variable just as you would in a normal function
let URL2 = "https://url.com/asd.php"
let url = URL(string: URL2)
URLSession.shared.dataTask(with:url!) { (data, response, error) in
if error != nil {
print(error as Any)
completion(nil)
} else {
do {
guard let parsedData = try JSONSerialization.jsonObject(with: data!) as? [String:Any] else { completion(nil); return }
guard let ips = parsedData["ip"] as? String else {completion(nil); return }
print("The IP is: " + ips) //Prints the value correctly
completion(ips)
} catch let error as NSError {
print(error)
completion(nil)
}
}
}.resume()
}

我是这样调用它的:

 getJsonFromUrl(name: "Bob", completion: { ips in
print(ips)
})

但是,我想将 ips 从我调用的地方转换为全局变量。目前,我在 ViewController 外部声明了一个名为 ip2 的变量,这就是我尝试设置该变量的方法:

 getJsonFromUrl(name: "Bob", completion: { ips in
print(ips)
ip2 = ips!
})

并且它没有将 ip2 设置为 ips 的值。你怎么能做到这一点?

最佳答案

我认为这个问题是因为 URLSession 是异步任务。试试这个可能会有所帮助:

更改定义 ip2 变量的方式,如下所示:

var ip2 : String = "" {
didSet {
//Do something when ip2 get the value
}
}

关于json - Swift 从函数完成中获取值并将其设置为全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46043365/

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