Json Tableview Swift

时间:2015-08-18 11:48:41

标签: ios json swift tableview nsdictionary

这篇文章是在一篇旧文章之后发布的,其中有些人帮我解决了类似的问题。

我目前正在开发一个应用程序,它通过向web服务发出请求来列出用户对象,该服务以这种格式发送JSON响应:

{
"objects": [
    {
        "id": "28",
        "title": "test",
        "price": "56 €",
        "description": "kiki",
        "addedDate": "11-07-2015",
        "user_id": "1",
        "user_name": "CANOVAS",
        "user_zipCode": "69330",
        "category_id": "1",
        "category_label": "VEHICULES",
        "subcategory_id": "1",
        "subcategory_label": "Voitures",
        "picture": "",
        "bdd": {},
        "picture_url": "http://jdl-barreme-orange.dyndns.org/WEBSERVICE/pictures/test.JPG"
    },
    {
        "id": "27",
        "title": "ferrari",
        "price": "55 €",
        "description": "rouge jantes",
        "addedDate": "11-07-2015",
        "user_id": "1",
        "user_name": "CANOVAS",
        "user_zipCode": "69330",
        "category_id": "1",
        "category_label": "VEHICULES",
        "subcategory_id": "1",
        "subcategory_label": "Voitures",
        "picture": "",
        "bdd": {},
        "picture_url": "http://jdl-barreme-orange.dyndns.org/WEBSERVICE/pictures/ferrari.JPG"
    }
}

我搜索一个方法,为每个字典检索值标题和价格,并将它们放在tableView中。

我使用的代码(tableviewcontroller):

if let jsonArray = NSJSONSerialization.JSONObjectWithData(urlData!, options: nil, error: nil) as? [[String:AnyObject]] {
for dict in jsonArray {
    if let title = dict["title"] as? String {
        println(title)
    }
}
}

但它不起作用,我放了一个断点,Xcode停在这里解释:

for dict in jsonArray

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

此示例JSON无效:它在最后]之前缺少}

但我想这只是一个粘贴错误,你正在使用的JSON格式正确,所以你的问题是你需要先访问你字典的objects键。

此键包含字典数组的值,因此我们将其用作类型转换:

if let json = NSJSONSerialization.JSONObjectWithData(urlData!, options: nil, error: nil) as? [String:AnyObject] {
    if let objects = json["objects"] as? [[String:AnyObject]] {
        for dict in objects {
            if let title = dict["title"] as? String {
                println(title)
            }
        }
    }
}

首先我们将NSJSONSerialization.JSONObjectWithData的结果转换为字典:[String:AnyObject],然后我们访问objects键的值,然后我们将此值转换为字典数组:{ {1}}。

请记住,使用JSON格式,字典的格式为[[String:AnyObject]],数组的格式为{}

你的例子是[]所以它是一个包含字典数组的字典。

Swift 2.0更新

{key:[{},{}]}

答案 1 :(得分:1)

试试这个:

var jsonResult: NSDictionary = NSJSONSerialization.JSONObjectWithData(urlData, options: NSJSONReadingOptions.MutableContainers, error: nil) as! NSDictionary
   var DataFromJSon = jsonResult["objects"] as! NSArray
        for one in DataFromJSon {
          var title = one["title"] as! String 
           println(title)

       }