hikki hikki - 1 month ago 11
Swift Question

NSJSONSerialization not working as expected in a Playground

I have to get football game schedule via JSON and extract date of each game of one of the specific universities.

I tried:

let url = NSURL(string: "SCHOOL URL")
let request = NSURLRequest(URL: url!)

let session = NSURLSession.sharedSession()

let task = session.dataTaskWithRequest(request){
(data, response, error) -> Void in

do{
let jsonData = try NSJSONSerialization.JSONObjectWithData(data!, options: .AllowFragments)

if let schedule = jsonData["schedule"] as? [[String: AnyObject]]{
for game in schedule{
if let date = game["date"] as? String{
print("\(date)");
}
}
}

} catch let error as NSError{
print("something bad happened!")
}
}

task.resume()


I am trying it in Xcode playground, but it does not print any at print line.
And I have appropriate url at SCHOOL URL.

Answer

In order to use asynchronous operations in an Xcode Playground, you need to set needsIndefiniteExecution to true.

Add this at the top of your code:

Swift 2

import XCPlayground
XCPlaygroundPage.currentPage.needsIndefiniteExecution = true

Swift 3

import PlaygroundSupport
PlaygroundPage.current.needsIndefiniteExecution = true