【问题标题】:Unwrapping Json Swift (found nil)展开 Json Swift(发现为零)
【发布时间】:2015-06-13 14:53:16
【问题描述】:

我目前正在尝试在 Xcode 中解码 Json,但我没有成功获得其中之一。

这就是我得到的:

[
  {
     "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"
         }
        ]
  }
]

我想获取“图片”行的“名称”值,但出现错误“在展开值时意外发现 nil”。

对于其他值,我以这种方式进行:

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

感谢您的帮助!

【问题讨论】:

  • println(urlData!)你看到了什么?
  • 我已经将此控件放入我的代码中,我得到:urlData: 2063404224
  • 这确实很有帮助。您能否使用 urlData 的完整值更新您的问题。

标签: json string swift nsdictionary


【解决方案1】:

图片不在您的其他值所在的子词典中。这应该可行,但您应该在强制转换之前检查所有值是否为 nil。

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 包含两个子字典,一个没有键,一个有键“图片”。图片是一个包含一个子字典的数组。

【讨论】:

  • 感谢您的帮助!我试过这个:如果 resp["pictures"]as? NSArray != nil { 让图片 = resp["name"] as! String NSLog("%@", 图片);但我不知道这是否是好方法,顺便说一下,我的应用在启动时会忽略代码,这让我觉得它不好
  • 确切的错误是:“不能下标'AnyObject'类型的值?”索引类型为“Int””
  • 它有效,而且,你让我明白我的错误在哪里。再次感谢您!
  • 不客气。但是不要忘记通过像我的示例代码中那样使用可选绑定来检查其他值是否真的存在而不是 nil。如果你不这样做并且其中一个数据元素是 nil 并且你使用它,你的应用程序将会崩溃。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-01
  • 1970-01-01
  • 2021-09-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多