0
저는 경쟁에서 변수를 가져 와서 전역 변수로 바꾸려고합니다.Swift가 함수 완성에서 값을 가져 와서 전역 변수로 설정합니다.
getJsonFromUrl(name: "Bob", completion: { ips in
print(ips)
})
그러나, 내가 전역 변수로 호출 곳에서 IP를 설정하려면 :
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()
}
이 내가 그것을 호출하는 방법입니다 : 이것은 내가 전화 했어 기능입니다. 현재, 나는의 ViewController 외부에 명시된 변수가 IP2라는 있고, 이것은 내가 변수를 설정 시도하는 방법입니다
getJsonFromUrl(name: "Bob", completion: { ips in
print(ips)
ip2 = ips!
})
을 그리고 IPS의 값으로 IP2을 설정하지 않는 것. 어떻게 할 수 있니?
그래서 대신을'var에 IP2 = ""'내가 넣어'var에 IP2 : 문자열 = ""{didSet { }}'? – FrankFabregat
예, 사용해보십시오. 확실하지는 않지만 정확히 –
과 didSet에 정확히 무엇을 넣어야합니까? @ TungVuDuc – FrankFabregat