基于 Array<>.count 链接多个 Alamofire 请求

问题描述

我正在尝试按顺序下载一些小图像。 首先,我从服务器下载一个 JSON,然后将它解析为一个对象数组。 从那时起,我需要为该数组中的每个对象下载一个图像。 由于我尝试在 for 循环中执行此操作,因此 dispatchQueue.main.async 被 array.count 调用了多次,显然,我试图避免这种情况。 你能提出最好的方法吗?

for partner in DataSingleton.sharedInstance.returnPartners()
    {
        let downloadURL: String = ("\(DataSingleton.sharedInstance.returnGetPartnerslogosRoute())/\(partner.logo!)")
        let destination: DownloadRequest.Destination = { _,_ in
            var documentsURL = FileManager.default.urls(for: .documentDirectory,in: .userDomainMask)[0]
            documentsURL.appendpathComponent(partner.logo)
            
            return (documentsURL,[.removePrevIoUsFile])
        }
                
        AF.download(downloadURL,to: destination).response { response in
            print(response)
            
            switch response.result
            {
                case .success(let json):
                    print("SERVER RESPONSE OK")

                    if( ((response.response?.statusCode)! == 200) ||
                        ((response.response?.statusCode)! == 201) )
                    {
                        print("SERVER RESPONSE OK! Code \(String(describing: response.response?.statusCode))")

                        self.downloadPartnerslogosstatus = true
                    }
                    else
                    {
                        print("SERVER RESPONSE NOK! Code \(String(describing: response.response?.statusCode))")
                        self.downloadPartnerslogosstatus = false
                    }
                
                case .failure(let error):
                    print("SERVER RESPONSE NOK \(error)")
                    self.downloadPartnerslogosstatus = false
            }
            
            dispatchQueue.main.async
            {
                if(self.downloadPartnerslogosstatus == true)
                {
                    print("Feedbackul a fost trimis cu succes!")

                    self.downloadPartnerslogosstatus = true
                    completionHandler(self.downloadPartnerslogosstatus)
                }
                else
                {
                    print("NOK ERROR")

                    self.downloadPartnerslogosstatus = false
                    completionHandler(self.downloadPartnerslogosstatus)
                }
            }
        }
    }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)