Welcome toVigges Developer Community-Open, Learning,Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.1k views
in Technique[技术] by (71.8m points)

swift - 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.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to Vigges Developer Community for programmer and developer-Open, Learning and Share
...