Я бы вызвал функцию из контроллера вида в другом контроллере вида.Эта функция будет анализировать json и помещать данные в массив, который является глобальным в структуре, проблема в том, что, если я помещу функцию в ViewDidAppear, она сделает большое количество запросов к веб-службе, если я помещу функцию в ViewDidLoadон не будет загружать данные, это моя функция, которую я бы назвал
@objc func pazienti(completionHandler: @escaping () -> Void) {
let endpoint = MyStruct.endpointpazienti()
ArrayGlobale.listapazienti.removeAll()
guard let url = URL(string: endpoint) else {
print("Error: cannot create URL")
let error = BackendError.urlError(reason: "Could not construct URL")
completionHandler()
//
return
}
let urlRequest = URLRequest(url: url)
let session = URLSession.shared
let task = session.dataTask(with: urlRequest) {
(data, response, error) in
guard data != nil else {
//self.updateUserInterface()
print("Error: did not receive data")
completionHandler()
return
}
guard error == nil else {
completionHandler()
return
}
// let decoder = JSONDecoder()
// do {
// let todos = try decoder.decode([MyStruct].self, from: responseData)
// completionHandler(todos, nil)
// } catch {
// print("error trying to convert data to JSON")
// print(error)
// completionHandler(nil, error)
// }
do
{
let json = try JSONSerialization.jsonObject(with: data!, options: .allowFragments) as? [[String:Any]] ?? []
print(json)
for x in json
{
print(x["nome"]!)
ArrayGlobale.listapazienti.append(ListaPazienti(nome: x["nome"] as! String, cognome: x["cognome"] as! String, id : x["id"] as! String, data : x["data"] as! String, sesso : x["sesso"] as! String))
//print(ArrayGlobale.listapazienti)
//sleep(4)
}
}catch
{
}
}
task.resume()
ArrayGlobale.action = completionHandler
}
, чтобы вызвать эту функцию, self.pazienti {}, но я пытаюсь создать класс extends с глобальной функцией, и это сделаетнекоторые запросы, блокирующие сервер.