Я звоню по вызову apnetworking api, каждый раз, когда его задержка увеличивается почти на 10-15 секунд. Только для этого вызова api. Вот мой код ниже.
Можно ли использовать диспетчеризацию для получения данных ответа от 3 до 5 секунд, по крайней мере.
Мой код:
self.myclass.GetArraryfromURL(urlstring, inviewController: self, Withhud: false, completionHandler:{(jsonObject:NSArray,Stats:Bool) in
NSLog("jsonObject=%@", jsonObject);
}})
func GetArraryfromURL(_ urlstring: String,inviewController viewController:UIViewController,Withhud check:Bool,completionHandler:@escaping (_ jsonObject:NSArray,_ Stats:Bool) -> Void)
{
if AFNetworkReachabilityManager.shared().isReachable
{
// HUD = MBProgressHUD()
// let encodestr = urlstring.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)! as String;
let encodestr = urlstring.addingPercentEncoding( withAllowedCharacters: .urlQueryAllowed)
if check == true
{
self.createhudinview(viewController, value:true)
}
print(urlstring)
let manager = AFHTTPSessionManager();
manager.responseSerializer = AFHTTPResponseSerializer()
manager.get(encodestr!, parameters: nil, success:{(task,responseObject) -> Void in
print("JSON: %@", responseObject);
do {
if check == true
{
self.createhudinview(viewController, value:false)
}
let jsonResults = try JSONSerialization.jsonObject(with: (responseObject as! NSData) as Data, options:JSONSerialization.ReadingOptions.mutableContainers) as! NSDictionary
print("status:%@",jsonResults.value(forKey: "result"))
let copyarr = jsonResults.value(forKey: "result") as? NSArray;
let flag = true // true if download succeed,false otherwise
completionHandler(copyarr ?? [],flag);
// success ...
} catch {
// failure
if check == true
{
self.createhudinview(viewController, value:false)
}
let flag = false // true if download succeed,false otherwise
completionHandler(NSArray(),flag);
self.ShowsinglebutAlertwithTitle(self.StringfromKey("WCi"), withAlert:self.StringfromKey("errorinretrive"), withIdentifier:"error")
}
}, failure:{(task,error) -> Void in
print("Error: %@", error);
if check == true
{
self.createhudinview(viewController, value:false)
}
let flag = false // true if download succeed,false otherwise
completionHandler(NSArray(),flag);
self.ShowsinglebutAlertwithTitle(self.StringfromKey("WCi"), withAlert:self.StringfromKey("errorinretrive"), withIdentifier:"error")
})
}
else
{
let flag = false // true if download succeed,false otherwise
completionHandler(NSArray(),flag);
self.ShowsinglebutAlertwithTitle(self.StringfromKey("WCi"), withAlert:self.StringfromKey("Check your connection"), withIdentifier:"internet")
}
}
Теперь задержка получения составляет 10 t0 15 сек. Но мне нужно сделать это как минимум 5 секунд. Не уверен, как я могу это сделать. Я попробовал с dispatch async
, но я не смог сделать это.
Любые возможности. Заранее спасибо !!