Latest 0.1.1
License MIT
Platforms ios 8.0, osx 10.9, requires ARC

Powerful file downloads for iOS 7+ with NSURLSession in Swift.

TCBlobDownloadSwift makes it easy to quickly download one or several large file(s) from your backend or the Internet right into your app. Give it an URL, a directory (or not, it can also download into the user’s tmp folder), a name (or not, it can also give your file a default name), and it will take care of everything.

See the Usage section for examples.


  • [x] File downloads with NSURLSession (including background downloads/pause/resume)
  • [x] File management (download directory + customizable filename)
  • [x] Download tasks configuration (cookies, timeout, number of concurrent connections…)
  • [x] Progression/Completion Protocol (delegate style)
  • [x] Progression/Completion Closures
  • [x] Complete example project with concurrent file downloading


  • iOS 7.0+ / Mac OS X 10.9+



Add the following to your Podfile:

source ''
platform :ios, '8.0'

pod 'TCBlobDownloadSwift', '~> 0.1.0'

And run:

$ pod install

Here is a helpful article about setting up your project to use CocoaPods with Swift.

Import as an embedded framework
  • Drag and drop TCBlobDownloadSwift.xcodeproj from the Finder to your opened project’s file navigator.
  • Project’s Target -> Build Phases -> Target Dependencies -> add TCBlobDownloadSwift.framework.
  • Click on the + button at the top left of the panel and select "New Copy Files Phase". Set the "Destination" to "Frameworks", and add TCBlobDownloadSwift.framework.
Import source files

For iOS 7 and other targets which do not support embedded frameworks, copy the source files (Source/*.swift}) into your project.


Before checking the iOS example project, here is how TCBlobDownloadSwift works in a few lines of code:



import TCBlobDownloadSwift

// Here is a simple delegate implementing TCBlobDownloadDelegate.
class DownloadHandler: NSObject, TCBlobDownloadDelegate {
  init() {}

  func download(download: TCBlobDownload, didProgress progress: Float, totalBytesWritten: Int64, totalBytesExpectedToWrite: Int64) {
    println("(progress*100)% downloaded")

  func download(download: TCBlobDownload, didFinishWithError error: NSError?, atLocation location: NSURL?) {
    println("file downloaded at (location)")

let fileURL = NSURL(string: "http://some.huge/file.mp4")
let download = TCBlobDownloadManager.sharedInstance
                                    .downloadFileAtURL(fileURL!, toDirectory: nil, withName: nil, andDelegate: DownloadHandler())


  • [ ] Documentation set
  • [ ] Full background download example
  • [ ] File upload

Latest podspec

    "name": "TCBlobDownloadSwift",
    "version": "0.1.1",
    "summary": "Powerful file downloads manager in Swift",
    "homepage": "",
    "license": {
        "type": "MIT",
        "file": "LICENSE"
    "authors": {
        "Thibault Charbonnier": "[email protected]"
    "platforms": {
        "ios": "8.0",
        "osx": "10.9"
    "source": {
        "git": "",
        "tag": "0.1.1"
    "source_files": "Source/*.{h,swift}",
    "requires_arc": true

Pin It on Pinterest

Share This