Вы не можете предотвратить переход внутри prepare(for segue
до тех пор, пока ваш запрос не завершится, вам нужно начать вызов асинхронного метода, когда вам нужно перейти по
loadX()
, а затем по завершении let task = URLSession.shared.dataTask(with: request)
do
self.x = XClass(y: y, a: a, b: b, c: c)!
}
DispatchQueue.main.async {
self.performSegue(withIdentifier:"SegueID",sender:nil)
}
и в этот момент x var имеет правильное значение в соответствии с ответом
другая вещь, вам может понадобиться x как любой массив, так как он будет содержать последнийзначение из этого цикла
for dic in items{
//guard let api = dic["Type"] as? String else {return}
let a = dic[“A”] as! String
let b = dic[“B”] as! String
let c = dic[“C”] as! String
self.x = XClass(y: y, a: a, b: b, c: c)!
}
плюс рассмотрите возможность использования Codable
для декодирования вашего ответа вместо JSONSerialization