类型 (string , anyobject) 没有下标成员

Posted

技术标签:

【中文标题】类型 (string , anyobject) 没有下标成员【英文标题】:type (string , anyobject) has no subscript member 【发布时间】:2016-02-13 07:15:00 【问题描述】:

我使用 dataTaskWithRequest 并获取包含两个对象的数组的 json(这些对象是键、值),我想检查两个对象中键的一个值。

这是我的代码:

let task = session.dataTaskWithRequest(request, completionHandler: data, response, error -> Void in
            print("Response: \(response)")

            var jsonArray: [String:AnyObject]!

            do 
                jsonArray = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions()) as? [String:AnyObject]
             catch 
                print(error)
            

            for json in jsonArray 
                print("object json reciver :",json)

//type (string , anyobject) has no subscript member
                print("state :",json["state"])

            
        )

【问题讨论】:

你所说的jsonArray不是数组,是字典。 【参考方案1】:

json 是一个类型为(String, AnyObject) 的变量。您不能为元组下标。

替换以下内容:

print("state :",json["state"])

与:

print("\(json.0) : \(json.1)")

【讨论】:

【参考方案2】:

您需要将 jsonArray 转换为 NSArray。

【讨论】:

以上是关于类型 (string , anyobject) 没有下标成员的主要内容,如果未能解决你的问题,请参考以下文章

类型'[String,AnyObject?]'不符合协议AnyObject?:为什么?

类型 [String: String] 不符合协议 'AnyObject'

无法将 '[String : AnyObject]?.Type' 类型(又名 'Optional<Dictionary<String, AnyObject>>.Type)的值转

类型'(String,AnyObject)'在swift中没有下标成员

无法转换类型“[String : AnyObject]?”的值到预期的参数类型“[NSAttributedStringKey:Any]?”

无法使用“String”类型的索引为“[String : AnyObject]”类型的值下标