Я получаю некоторые данные с сервера при использовании URLSession в приведенном ниже коде.
Когда я использую этот статический метод в коде, чтобы получить данные в каком-то другом контроллере представления (я имею в виду загрузочный метод, который я имею в виду), чтобы заполнить представление коллекции, мой пользовательский интерфейс останавливается на 2 секунды, что, я думаю, не должно быть так.
где моя ошибка?
class RelatedData{
static func get(_ Url:String?,completion:@escaping (Array<Game>,Int)-> Void){
guard let url = Url else{
return
}
var request = URLRequest(url: URL(string:url )!)
var gameArray = [Game]()
var status:Int!
request.httpMethod = "GET"
let task = URLSession.shared.dataTask(with: request) { data, response, error in
guard let data = data, error == nil else { // check for fundamental networking error
print("error=\(String(describing: error))")
return
}
if let httpStatus = response as? HTTPURLResponse, httpStatus.statusCode != 200 { // check for http errors
print("statusCode should be 200, but is \(httpStatus.statusCode)")
print("response = \(String(describing: response))")
}
do{
print("Here we are in related games")
let allData = try JSONDecoder().decode(RelaedGameObject.self, from: data)
status = allData.status
gameArray = allData.data
DispatchQueue.main.async{
let container = gameArray
completion(container,status)
gameArray.removeAll()
}
}
catch{
print(" Related Api Don't Work!!!")
}
}
task.resume()
}
}
//And This Is View Controller Call :
RelatedData.get(url){(Games,status) in
if status == 1{
self.relatedGames = Games
if Games.count == 0 {
self.label.font = UIFont(name: "IRANSans", size: 13)
self.relatedCollectionView.backgroundView = self.label
self.relatedLabel.isHidden = false
}else{
self.relatedLabel.isHidden = false
self.relatedCollectionView.isHidden = false
self.relatedCollectionView.reloadData()
self.relatedCollectionView.transform =CGAffineTransform(scaleX: -1.0, y: 1.0)
self.relatedActivityIndicator.stopAnimating()
}
}else{
print("Err in related games")
}
}
}