title: Converting JSON NSData to a dictionary
body: <p>I have a JSON file like this.</p>
  
  <pre><code>{   
  "Team Name" : "Team",
  "Images" : "images",
  "Players" : [
      {
          "Number" : "61",
          "Height" : "6'5\"",
          "Position" : "P",
          "DOB" : "Feb 22, 1989",
          "First Name" : "Chris",
          "Weight" : "210",
          "Last Name" : "Shmoe",
          "Bats" : "R",
          "Throws" : "R"
      },
      {
          "Number" : "54",
          "Height" : "6'3\"",
          "Position" : "P",
          "DOB" : "Dec 31, 1982",
          "First Name" : "Ronald",
          "Weight" : "240",
          "Last Name" : "Peter",
          "Bats" : "R",
          "Throws" : "R"
      },
      {
          "Number" : "67",
          "Height" : "6'4\"",
          "Position" : "P",
          "DOB" : "Sep 24, 1984",
          "First Name" : "Scott",
          "Weight" : "215",
          "Last Name" : "Tim",
          "Bats" : "R",
          "Throws" : "R"
      },
  </code></pre>
  
  <p>Heres What I have</p>
  
  <pre><code>  var downloadFailed = false
      var error: NSError? = nil
  
      let navigationController = self.window!.rootViewController as! UINavigationController
      let masterController = navigationController.childViewControllers[0] as! PlayerViewController
  
      if let url = NSURL(string: " ") {
  
          if let urlData = NSData(contentsOfURL: url) {
              let jsonString = NSString(data: urlData, encoding: NSUTF8StringEncoding)
              println(jsonString)
              var result = NSJSONSerialization.JSONObjectWithData(urlData, options: NSJSONReadingOptions.allZeros, error: nil) as? NSDictionary
  
              print("dictionary created")
              if let players = result?.objectForKey("Players") as? [[String:AnyObject]]
              {
  
                  for dictionary in players{
  
                      let fname = players["First Name"]
                      let lname = array["Players"]?["Last Name": String]
                      let number = array["Players"]?["Number"]
                      let position = array["Players"]?["Position"]
                      let bats = array["Players"]?["Bats"]?!.string
                      let throws = array["Players"]?["Throws"]?!.string
                      let height = array["Players"]?["Height"]?!.string
                      let weight = array["Players"]?["Weight"]?!.string
                      let DOB = array["Players"]?["DOB"]?!.string
  
  
                     masterController.objects.append(Players(fName: (fname as String?)!, lname: (lname as String?)!, position: (position as String?)!, bats: (bats as String?)!, throws: (throws as String?)!, height: (height as String?)!, weight: (weight as String?)!, DOB: (DOB as String?)!, number: (number as String?)!))}
  </code></pre>
  
  <p>Currently the only thing I think I dont have correct is I dont know how to make the code read in properly so that it uses the key "Players" and reads the correct information from the JSON file.</p>
  
  <p>EDIT:</p>
  
  <p>I have been working on it a bunch and have gotten this now I have very few errors just no keeps crashing at </p>
  
  <pre><code> if let dict = array as? [String: AnyObject]
  </code></pre>
  
  <p>But heres my new code for my load data function</p>
  
  <pre><code> func preloadData() {
  
  
          var downloadFailed = false
          var error: NSError? = nil
  
          let navigationController = self.window!.rootViewController as! UINavigationController
          let masterController = navigationController.childViewControllers[0] as! PlayerViewController
  
          if let url = NSURL(string: "removed for reasons") {
  
              if let urlData = NSData(contentsOfURL: url) {
  
                  if let array: AnyObject! = NSJSONSerialization.JSONObjectWithData(urlData, options: nil, error: &amp;error)
                  {
                      print (array)
                      if let dict = array as? [String: AnyObject]
                      {
                      if let players = dict["Players"] as? [AnyObject]
                      {
                      for dictionary in players {
                      let fname = dictionary["First Name"]
                      let lname = dictionary["Last Name"]
                      let number = dictionary["Number"]
                      let position = dictionary["Position"]
                      let bats = dictionary["Bats"]
                      let throws = dictionary["Throws"]
                      let height = dictionary["Height"]
                      let weight = dictionary["Weight"]
                      let DOB = dictionary["DOB"]
  
  
                     masterController.objects.append(Players(fName: fname as! String, lname: lname as! String, position: position as! String, bats: bats as! String, throws: throws as! String, height: height as! String, weight: weight as! String, DOB: DOB as! String, number: number as! String))
                          }
                          }
                  }
  
                  //masterController.objects.sort({$0.courseNumber &lt; $1.courseNumber})
              }
              else
              {
                  downloadFailed = true
              }
          } else {
              downloadFailed = true
          }
      } else {
          downloadFailed = true
      }
  
      if downloadFailed {
          let alert = UIAlertView(title: "Error", message: "Unable to download course data", delegate: nil, cancelButtonTitle: "OK")
          alert.show()
      }
  }
  </code></pre>