Unwrapping Json Swift (found nil)

934 Views Asked by At

i currently trying to decode Json in Xcode, but i not succed to get one of them.

This is what i get :

[
  {
     "id": "1",
     "title": "bmw",
     "price": "500.00",
     "description": "330",
     "addedDate": "2015-05-18 00:00:00",
     "user_id": "1",
     "user_name": "CANOVAS",
     "user_zipCode": "32767",
     "category_id": "1",
     "category_label": "VEHICULES",
     "subcategory_id": "2",
     "subcategory_label": "Motos",
     "bdd": {} 
  }
     "pictures": 
        [
         { "name": "http://cars.axlegeeks.com/sites/default/files/4315/media/images/2014_BMW_Z4_sDrive28i_3790993.jpg"
         }
        ]
  }
]

And i want to get the value of "name" for the "Pictures" lines but i have the error "unexpectedly found nil while unwrapping value".

For the others values i proceed this way :

let jsonData:NSDictionary = NSJSONSerialization.JSONObjectWithData(urlData!, options:NSJSONReadingOptions.MutableContainers , error: &error) as! NSDictionary

            //Browse into JSON to get datas
            let resp = jsonData["0"] as! NSDictionary
                let user_nameR = resp["user_name"] as! String
                let user_zipCodeR = resp["user_zipCode"] as! String
                let titleR = resp["title"] as! String
                let priceR = resp["price"] as! String
                let descriptionR = resp["description"] as! String

Thank's for your help !

1

There are 1 best solutions below

4
On BEST ANSWER

Pictures is in not in the subdictionary your other values are. This should work, but you should check all values if they are nil before you force cast them.

if let pictureArray = jsonData["pictures"] as? NSArray
{
    if let pictureDict = pictureArray.firstObject as? NSDictionary
    {
        if let pictureName = pictureDict.objectForKey("name") as? String
        {
            NSLog("Picture name: %@", pictureName)
        }
    }
}

jsonData contains two sub-dictionaries, one without a key and one with key 'pictures'. Pictures is an array containing one sub-dictionary.