首页 > 解决方案 > AFNetworking 调用总是延迟 api 调用

问题描述

我正在调用 afnetworking 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但我做不到。

任何可能性。在此先感谢!

标签: iosswiftiphonexcodeafnetworking

解决方案


推荐阅读