我目前正在尝试学习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()
}
答案 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"])
}
}
}