AFNetworking получение задержки всегда для вызова API - PullRequest
0 голосов
/ 30 марта 2019

Я звоню по вызову 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, но я не смог сделать это.

Любые возможности. Заранее спасибо !!

...