swift如何将一个值,得到一个 JSON 2 三维结构 (嵌套词典)?

发布时间: 2017/3/4 18:52:35
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我很难从一个 2 维的 JSON 结构获取值并将它放在表中。 我用 AFNetworking 来获取 JSON 数据。此代码将生成在 Xcode 6 β 7:

func apiConnetion() {
        var result: NSArray = []
        manager.GET("https://example.com/",
            parameters: nil,
            success: { (operation: AFHTTPRequestOperation!,responseObject: AnyObject!) in
                result = responseObject as NSArray
                println(result)
                dispatch_async(dispatch_get_main_queue(), {
                    self.commentData = result
                    self.commentTableView!.reloadData()
                })

            },

            failure: { (operation: AFHTTPRequestOperation!,error: NSError!) in
                println("error")
                println(" \(error.localizedDescription ) ")

        })

    }

println(result)打印这样的结构︰

{
"id" = 1;
"name" = "Test1";
"category" =
           "id" = 1;
           "name" = "justtest";
}
{
"id" = 2;
"name" = "Test2";
"category" =
         "id" = 2;
         "name" = "justtest1";
}

类别名称?

解决方法 1:

你有 NSArray 与两个条目。使用 indexPath.row 在你 cellForRowAtIndexPath ,选择正确的条目。这将返回一个字典。选择对应于"类别",返回的值 NSDictionary? 因为字典访问总是返回可选值的键并不存在的情况下。使用 ? 打开的。A ?! 这里的崩溃的问题,试图解开零,如果"类别"不是一把钥匙。现在查找返回的"名称" NSString? 。最后使用零合并运算符得到的字符串或空字符串,如果"类别"或"名称"不是有效的密钥。

let name = result[indexPath.row]["category"]?["name"] ?? ""
官方微信
官方QQ群
31647020