About AFDownloadRequestOperation

AFDownloadRequestOperation is a subclass of AFHTTPRequestOperation for downloading files to a specified destination path, with progress support.

This class extends the features provided by AFHTTPRequestOperation to support file downloading. It encapsulates the logic necessary to download a file from a remote URL, with progress tracking and communication to the user.


  • Asynchronous downloading with progress tracking
  • Ability to pause and resume downloads
  • Option to set a custom download destination path
  • Background downloading support (in case of app termination)
  • Notification block callbacks for progress and completion events


To use AFDownloadRequestOperation, follow these steps:

  1. Import the AFNetworking module:
import AFNetworking
  1. Create an NSURLRequest object for the file you want to download:
let url = URL(string: "")
let request = URLRequest(url: url!)
  1. Configure an AFDownloadRequestOperation object with the request:
let operation = AFDownloadRequestOperation(request: request, targetPath: "/path/to/save/file.pdf", shouldResume: false)
  1. Set progress and completion block callbacks:
operation.progressBlock = { (bytesWritten, totalBytesWritten, totalBytesExpectedToWrite) in
    // Update UI with download progress
operation.completionBlock = { (operation, error) in
    if let error = error {
        print("Download failed: \(error.localizedDescription)")
    } else {
        print("Download completed successfully")
  1. Start the download operation:
operation.start() // or add the operation to an operation queue

Additional Options

AFDownloadRequestOperation provides additional options to customize the download behavior. Use the following properties to modify the default behavior:

  • TargetPath: Set a custom download destination path. If not specified, the downloaded file will be saved in the temporary directory.
  • ShouldResume: Set to true to enable resumable downloads.
  • ShouldOverwrite: Set to true to overwrite an existing downloaded file at the target path.
operation.shouldOverwrite = true

Modify these properties before starting the download operation.


AFDownloadRequestOperation is a powerful class that facilitates the downloading of files with progress tracking and other customization options. By following the provided usage guide, you can easily integrate file downloads into your application.