Webサーバー上の外部JSONファイルから文字列を取得しようとしていますが、正常に取得されますが、値を取得するクロージャの内側にあります。私はそれを外に出す必要があるので、変数returnipで返すことができます。これをどうやって行うのですか?あなたは、非同期機能のみ閉鎖自体から返すクロージャ内のreturn文から戻ることはできません閉鎖内で指定された変数を返す - Swift
func getJsonFromUrl() -> String {
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)
} else {
do {
let parsedData = try JSONSerialization.jsonObject(with: data!) as! [String:Any]
let ips = parsedData["ip"] as! String
print("The IP is: " + ips) //Prints the value correctly
var returnip = ips //The value that I want to return, that does not go outside this closure
} catch let error as NSError {
print(error)
}
}
}.resume()
return returnip //Does not return anything
}
おかげ
:
次に、あなたがこのようにそれを呼び出すことができます。 Web呼び出しは非同期です。 URL呼び出しが完了する前に戻ります。 – ryantxr