类型“任何”没有下标成员[重复]
Posted
技术标签:
【中文标题】类型“任何”没有下标成员[重复]【英文标题】:Type ´Any´ has no subscript members [duplicate] 【发布时间】:2016-10-03 21:57:39 【问题描述】:我有用于 swift2.2 的 json 解析代码,但是当我将它用于 Swift 3.0 时出现错误(“Any”类型没有下标成员),谁能帮我转换代码。
do
let json = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers)
if json is [String: AnyObject]
print(json)
if let error = json["error"] as? String
print(error);
else if let items = json["items"] as? [[String: AnyObject]]
for item in items
print(item)
let book_id = item["id"] as? String
if let volumeInfo = item["volumeInfo"] as? [String: AnyObject]
let book_title = volumeInfo["title"] as? String
DispatchQueue.main.async(execute: () -> Void in
self.lblDataInfo.text = "ISBN: "+self.currentISBN!+" ID:"+book_id!
self.lblDataType.text = book_title
)
break // for now, only show first
else
DispatchQueue.main.async(execute: () -> Void in
self.lblDataInfo.text = "ISBN: "+self.currentISBN!+" Not identified"
self.lblDataType.text = ""
)
catch let jsonError
print(jsonError)
task.resume()
【问题讨论】:
相关一栏有很多相关问题。 【参考方案1】:这:if json is [String: AnyObject]
正在检查 json 是否是字典,但不会将其转换为字典,因此当您尝试在此处将其作为字典访问时:json["error"]
您正在尝试将其作为字典。
相反,您只需将其转换为具有正确类型的新变量:
if let jsonDictionary = json as? [String : AnyObject]
【讨论】:
【参考方案2】:好像是通过了json数据,但不知道数据是什么类型,因为目前它的类型是Any
if json is [String: AnyObject]
print(json)
let jsonData = json as! NSDictionary // or if you want to be more specific ,'json as! [String: AnyObject]' but u will have to cast the value of your dict 'AnyObject' later on
现在,数据不是“Any”类型而是“NSDictionary”类型
如果你想测试它,你可以在print(json)
行设置一个断点,运行代码后,在控制台中输入po json as! NSDictionary
,这样你就可以看到 NSDictionary 是否是正确的类型来转换你的 json数据
【讨论】:
以上是关于类型“任何”没有下标成员[重复]的主要内容,如果未能解决你的问题,请参考以下文章
为firebase数据库创建用户对象时,类型“任何”没有下标成员[重复]