title: Returning data from async call in Swift function
body: <p>I have created a utility class in my Swift project that handles all the REST requests and responses. I have built a simple REST API so I can test my code. I have created a class method that needs to return an NSArray but because the API call is async I need to return from the method inside the async call. The problem is the async returns void.
  If I were doing this in Node I would use JS promises but I can't figure out a solution that works in Swift.</p>
  
  <pre><code>import Foundation
  
  class Bookshop {
      class func getGenres() -&gt; NSArray {
          println("Hello inside getGenres")
          let urlPath = "http://creative.coventry.ac.uk/~bookshop/v1.1/index.php/genre/list"
          println(urlPath)
          let url: NSURL = NSURL(string: urlPath)
          let session = NSURLSession.sharedSession()
          var resultsArray:NSArray!
          let task = session.dataTaskWithURL(url, completionHandler: {data, response, error -&gt; Void in
              println("Task completed")
              if(error) {
                  println(error.localizedDescription)
              }
              var err: NSError?
              var options:NSJSONReadingOptions = NSJSONReadingOptions.MutableContainers
              var jsonResult = NSJSONSerialization.JSONObjectWithData(data, options: options, error: &amp;err) as NSDictionary
              if(err != nil) {
                  println("JSON Error \(err!.localizedDescription)")
              }
              //NSLog("jsonResults %@", jsonResult)
              let results: NSArray = jsonResult["genres"] as NSArray
              NSLog("jsonResults %@", results)
              resultsArray = results
              return resultsArray // error [anyObject] is not a subType of 'Void'
          })
          task.resume()
          //return "Hello World!"
          // I want to return the NSArray...
      }
  }
  </code></pre>