Цель приложения, встроенного в Swift, - прочитать значение, отправить его на страницу php, которая возвращает значение, соответствующее URL-адресу.Впоследствии этот URL будет установлен в веб-представлении для отображения.
В настоящее время мое приложение отправляет значение, и я могу получить URL-адрес в строковом формате.Моя проблема в том, что если я использую эту переменную вне процесса URLSession.shared.dataTask, то переменная будет пустой.
Поиск в Интернете обнаружил, что причина в том, что операция выполняется в другом потоке, так как я могуподдерживать постоянство этого значения?
Я разрабатываю в быстрые 4,2
func risolutoreIndirizzo() -> String {
var addressURL:String = ""
let domain = "https://mywebsite.com/"
let domain = "getUrl.php"
print("URL -> \(domain+domain)")
let request = NSMutableURLRequest(url: NSURL(string: domain+domain)! as URL)
request.httpMethod = "POST"
let nameDB = "SVILUPPO"
let postString = "StringaAccesso=\(nameDB)"
request.httpBody = postString.data(using: String.Encoding.utf8)
let task = URLSession.shared.dataTask(with: request as URLRequest) {
data, response, error in
if error != nil {
print("error=\(String(describing: error))")
return
}
//print("response = \(response)")
let responseString:String! = NSString(data: data!, encoding: String.Encoding.utf8.rawValue) as String?
print("responseString = \(String(describing: responseString))")
print("---------------------------------")
let arrayResponse = responseString.split(separator: ",")
//print(arrayResponse[0])
addressURL = arrayResponse[0].split(separator: ":")[1] + ":" + arrayResponse[0].split(separator: ":")[2]
print("AddressURL -> " + addressURL)//Here I see correctly -> https://mywebsite.com/privateProject
stringURl = addressURL //stringURl initialized at the beginning of the code
}
task.resume()
print("URL -> " + stringURl)//Here the variable is empty
return addressURL
}