by Hwee-Boon Yar — Subscribe to tips via weekly email

NSURLSession was introduced along with iOS 7 as a replacement for NSURLConnection . Session 705 "What’s New in Foundation Networking" in WWDC 2013 talks in great detail about NSURLSession and the advantages of it including access to configuration on a per session basis. Here's a common example of how to use NSURLSession which you can immediately replace NSURLConnection with. Let's say you want to perform a GET on a URL and retrieve the response:

var conf = NSURLSessionConfiguration.defaultSessionConfiguration() var session = NSURLSession(configuration: conf) let urlString = "http://google.com" var task = session.downloadTaskWithURL(NSURL(string: urlString)!) {url, response, error in dispatch_async(dispatch_get_main_queue()) { if let error = error { //Handle error println("error: \(error)") } else { var stringContents = NSString(data: NSData(contentsOfURL: url)!, encoding: NSUTF8StringEncoding) println("results: \(stringContents)") } } } task.resume()

You create a NSURLSession instance that can be shared across request. For each request, you create a new task. You always resume() a task to run it.

The NSURLSession instance is configured via a NSURLSessionConfiguration instance. For example, if you want to restrict requests for this session to not use cellular connectivity, you can do:

conf.allowsCellularAccess = false

Or if the requests are for a JSON API that uses Basic Authentication:

let username = "some user name" let password = "some password" let userPasswordString = "#{username}:#{password}" let userPasswordData = userPasswordString.dataUsingEncoding(NSUTF8StringEncoding) let base64EncodedCredential = userPasswordData!.base64EncodedStringWithOptions(NSDataBase64EncodingOptions.Encoding64CharacterLineLength) let authString = "Basic \(base64EncodedCredential)" conf.HTTPAdditionalHeaders = ["Accept": "application/json", "Authorization": authString]

These configurations can all be made on a per session basis.





Your feedback is valuable: Do you want more nuggets like this? Yes or No

.

.