I have this code:
override func viewDidLoad() {
super.viewDidLoad()
navigationItem.title = "Tavolo n° " + UserDefaults.standard.string(forKey: "number")!
self.navigationController?.isNavigationBarHidden = false
navigationController?.navigationBar.barTintColor = UIColor(red: 0.30, green: 0.69, blue: 0.31 , alpha: 1.0)
navigationController?.navigationBar.titleTextAttributes = [NSAttributedStringKey.foregroundColor:UIColor.white]
navigationController?.navigationBar.tintColor = UIColor.white;
pickerView.delegate = self
pickerView.dataSource = self
name.delegate = self
let myUrl = NSURL(string: "http://192.168.1.116/myorder/data/fetch_name.php");
let request = NSMutableURLRequest(url: myUrl! as URL);
request.httpMethod = "POST";
let postString = "number=\(UserDefaults.standard.integer(forKey: "number"))";
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
}
var _: NSError?
do{
let json = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers) as? NSArray
if let parseJSON: NSArray = json {
for index in 0...parseJSON.count-1 {
if (parseJSON[index] is NSNull){
let myAlert = UIAlertController(title: "Attenzione\n", message: "Nessun nominativo per questo tavolo", preferredStyle: UIAlertControllerStyle.alert);
let okAction = UIAlertAction(title: "Ok", style: UIAlertActionStyle.default){ action in }
myAlert.addAction(okAction);
self.present(myAlert, animated: true, completion: nil);
}else{
let nomi = parseJSON[index] as! [String:Any]
ViewController.listNames.append(nomi["name"] as! String)
}
}
}
}catch{
print("error=\(error)")
return
}
}
task.resume();
print(ViewController.listNames)
selectedName = ViewController.listNames[0]
NotificationCenter.default.addObserver(self, selector: #selector(NamesVC.keyboardWillShow(sender:)), name: NSNotification.Name.UIKeyboardWillShow, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(NamesVC.keyboardWillHide(sender:)), name: NSNotification.Name.UIKeyboardWillHide, object: nil)
}
Sometimes the response returns before printing the first element of ViewController.listNames, but sometimes not so it prints nothing. How can I wait until the response returns? I have tried other answers on stackOverflow, but I can't do it