There are various ways to download the files from a URL but the best way to download it using Alamofire because it provides us various sub functionalities like:
a) downloadProgress : For showing the fraction completed while downloading the files.
b) validation : Allows to check the errors while downloading the files.
c) responseData: Contains the response for download.
Here is the code for using the Almofire for downloading from the URL :
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | // MARK: - Load URL     func downloadUsingAlamofire(url: URL, fileName: String) {         let manager = Alamofire.SessionManager.default         let destination: DownloadRequest.DownloadFileDestination = { _, _ in             self.documentsURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]             self.documentsURL.appendPathComponent(fileName)             print(self.documentsURL)             return (self.documentsURL, [.removePreviousFile])         }         manager.download(url, to: destination)             .downloadProgress(queue: .main, closure: { (progress) in                 //progress closure                 print(progress.fractionCompleted)             })             .validate { request, response, temporaryURL, destinationURL in                 // Custom evaluation closure now includes file URLs (allows you to parse out error messages if necessary)                 GlobalData.sharedInstance.dismissLoader()                 return .success             }             .responseData { response in                 if let destinationUrl = response.destinationURL as? URL {                     print(destinationUrl)                     if let statusCode = (response as? HTTPURLResponse)?.statusCode {                         print("Success: \(statusCode)")                         GlobalData.sharedInstance.dismissLoader()                     }                     let AC = UIAlertController(title:GlobalData.sharedInstance.language(key: "success"), message:GlobalData.sharedInstance.language(key: "filesavemessage"), preferredStyle: .alert)                     let okBtn = UIAlertAction(title: "view", style: .default, handler: {(_ action: UIAlertAction) -> Void in                         self.documentPathUrl = response.destinationURL                         //open file                     })                     let noBtn = UIAlertAction(title: GlobalData.sharedInstance.language(key: "cancel"), style: .destructive, handler: {(_ action: UIAlertAction) -> Void in                     })                     AC.addAction(okBtn)                     AC.addAction(noBtn)                     self.present(AC, animated: true, completion: { })                 } else {                     GlobalData.sharedInstance.dismissLoader()                 }             }     } | 
I hope from this, it will make you more comfortable using Alamofire functionality for downloading from the URL into your app. Thanks for tuning in once again!