输入“任何?”没有下标成员[重复]

Posted

技术标签:

【中文标题】输入“任何?”没有下标成员[重复]【英文标题】:Type 'Any?' has no subscript members [duplicate] 【发布时间】:2016-10-15 02:47:19 【问题描述】:

我目前正在尝试学习 Swift。我正在使用 API 和 JSON 来解决这个练习问题。在尝试显示名称的打印语句中,它给了我错误:

“类型 'Any' 没有下标成员”。

谁能向我解释一下没有下标成员是什么意思,我可以做些什么来解决这个问题?我已经尝试查看 Stack Overflow 上的其他问题,但无论如何都无法解决这个问题。

override func viewDidLoad() 
    super.viewDidLoad()

    let url = URL(string: "https://www.googleapis.com/blogger/v3/blogs/2399953/posts?key=AIzaSyDRiJilhWCEkMeEi40ONIPI3eDWukA0mQo")

    let task = URLSession.shared.dataTask(with: url!)  (data, response, error) in
        if error != nil 
            print("Error in URL")
         else 
            do 
                let jsonResults = try JSONSerialization.jsonObject(with: data!, options: JSONSerialization.ReadingOptions.mutableContainers) as AnyObject

                let items = (jsonResults["items"]!)!

                for item in items as! [AnyObject] 
                    print(item["author"]?["displayName"]!)
                
             catch 
                print("Error in JSON")
            
        
    
    task.resume()

【问题讨论】:

看看:***.com/questions/39423367/… 【参考方案1】:

将任何情况发送到AnyObject 是一件坏事。请具体说明您将获得什么,如果不是,您可以使用guard 语句来避免崩溃。

if let jsonResults = try JSONSerialization.jsonObject(with: data!, options: JSONSerialization.ReadingOptions.mutableContainers) as? Dictionary<String, AnyObject>
    if let items = jsonResults["items"] as? Array<Dictionary<String, AnyObject>>
        for item in items 
            guard let dictAuthorDetails = item["author"] else 
                continue
            
            print(dictAuthorDetails["displayName"])
        
    

【讨论】:

以上是关于输入“任何?”没有下标成员[重复]的主要内容,如果未能解决你的问题,请参考以下文章

类型“任何”没有下标成员[重复]

类型“任何”没有下标成员[重复]

为firebase数据库创建用户对象时,类型“任何”没有下标成员[重复]

在 swift 3 中打印 json 时出现任何下标成员错误 [重复]

类型“Any”没有下标成员/Swift 3 [重复]

类型“any”在alamofire 4 iOS swift中没有下标成员[重复]