0
我想从函数的竞争中获取变量,并将其变成全局变量。这是我打电话的功能:Swift从函数完成中获取值并将其设置为全局变量
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的价值。你怎么能这样做?
所以不是'VAR IP2 = “”'我把'VAR IP2:字符串= “”{didSet { }}'? – FrankFabregat
是的,试试这个。我不确定,但它可能会帮助您 –
以及我在didSet {}部分放置了什么? @TungVuDuc – FrankFabregat