         // Initialize Asynchronous Fetch Request
         let asynchronousFetchRequest = NSAsynchronousFetchRequest(fetchRequest: fetchRequest) { (asynchronousFetchResult) -> Void in
             dispatch_async(dispatch_get_main_queue(), { () -> Void in
+                // Dismiss Progress HUD
+                SVProgressHUD.dismiss()
+                
+                // Process Asynchronous Fetch Result
                 self.processAsynchronousFetchResult(asynchronousFetchResult)
+                
+                if let asynchronousFetchProgress = asynchronousFetchResult.progress {
+                    // Remove Observer
+                    asynchronousFetchProgress.removeObserver(self, forKeyPath: "completedUnitCount")
+                }
             })
         }
         
         do {
+            // Create Progress
+            let progress = NSProgress(totalUnitCount: 1)
+            
+            // Become Current
+            progress.becomeCurrentWithPendingUnitCount(1)
+            
             // Execute Asynchronous Fetch Request
-            let asynchronousFetchResult = try managedObjectContext.executeRequest(asynchronousFetchRequest)
+            let asynchronousFetchResult = try managedObjectContext.executeRequest(asynchronousFetchRequest) as! NSAsynchronousFetchResult
             
-            print(asynchronousFetchResult)
+            if let asynchronousFetchProgress = asynchronousFetchResult.progress {
+                asynchronousFetchProgress.addObserver(self, forKeyPath: "completedUnitCount", options: NSKeyValueObservingOptions.New, context: nil)
+            }
+            
+            // Resign Current
+            progress.resignCurrent()
             
         } catch {
             let fetchError = error as NSError

            tableView.reloadData()
        }
    }

}


import UIKit
import CoreData
import SVProgressHUD

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {

