微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决基于 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 举报,一经查实,本站将立刻删除。