计算JSON数据中键的出现次数

时间:2015-04-09 01:20:33

标签: ios json swift

我想计算我的json结果中的“项目”数量,以便我循环。请参阅以下对我不起作用的代码:

var jsonResult:NSDictionary = NSJSONSerialization.JSONObjectWithData(data, options: .MutableContainers, error: nil) as NSDictionary
for var i = 0; i < jsonResult["items"].count; i++ {}

它给我以下编译错误: “AnyObject?没有名为count的成员”

你能帮我理解背后的原因吗?并且, 你能告诉我周围的工作吗?

感谢您的帮助

2 个答案:

答案 0 :(得分:2)

因为您正在解析动态数据,所以编译器无法保证JSON解析器在运行时返回的内容。因此,您从JSON对象检索的任何值都是可选的,您必须显式解包。

您可以在http://www.atimi.com/simple-json-parsing-swift-2/了解相关信息。

我相信现在在Swift中有用于JSON解析的库,这使得这类东西变得更容易。

答案 1 :(得分:1)

由于此jsonResult["items"]返回AnyObject?,您必须将其转换为实际类。例如

 var dic:NSMutableDictionary = NSMutableDictionary()
    dic.setValue(["first","second","third"], forKey: "items")
    var json:NSData = NSJSONSerialization.dataWithJSONObject(dic, options: NSJSONWritingOptions.PrettyPrinted, error: nil)!
    var jsondic = NSJSONSerialization.JSONObjectWithData(json, options:NSJSONReadingOptions.MutableContainers, error: nil) as NSDictionary
    var jsonItems = jsondic["items"] as NSArray
    for var i = 0;i < jsonItems.count; i++ {
        println(jsonItems[i] as String)
    }

这是关键

        var jsonItems = jsondic["items"] as NSArray

你可以使用“as?”,这样如果转换失败,你的app就不会崩溃

  var jsonItems = jsondic["items"] as? NSArray
        if(jsonItems != nil){
            for var i = 0;i < jsonItems!.count; i++ {
                println(jsonItems![i] as String)
            }
        }