输入'Any?'没有下标成员

时间:2016-10-15 02:47:20

标签: ios swift

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

  

“输入'任何'没有下标成员”。

有人可以向我解释没有下标成员的含义以及我可以采取哪些措施来解决这个问题?我已经尝试过查看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()
}

1 个答案:

答案 0 :(得分: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"])
        }
    }
}
相关问题