我想打印每个"标题" in" items"," snippet",但我的for循环由于某种原因没有执行。如果有人可以帮助我,请提前谢谢。
代码:
with
JSON -I缩短了很长时间,因为有一个限制 - 我收到的是Google:
let url = URL(string: "https://www.googleapis.com/youtube/v3/search?key=\(key)&channelId=\(channelID)&part=snippet,id&order=date&maxResults=20")
let task = URLSession.shared.dataTask(with: url!) { (data, response, error) in
if error != nil {
print("ERROR")
} else {
if let content = data {
do {
let json = try JSONSerialization.jsonObject(with: content, options: JSONSerialization.ReadingOptions.mutableContainers) as AnyObject
print(json)
for _ in json as! [String: AnyObject] {
if let items = json["items"] as? NSDictionary {
print(items)
if let snippet = items["snippet"] as? NSDictionary {
print(snippet)
if let title = snippet["title"] as? NSDictionary {
print(title)
}
}
}
}
} catch {
print("ERROR")
}
}
}
}
task.resume()
答案 0 :(得分:2)
首先不要在Swift中使用NSDictioanry
和NSArray
而不是使用Swift本机类型Dictionary([:])
和Array([])
,因为使用此编译器将很容易理解什么类型价值对象的。同样在Swift中,不需要指定mutableContainers
选项,只需使用var
声明它就可以获得可变对象。
现在,您的JSON
回复items
Array
Dictionary
Dictionary
而非直接title
,而snippet
位于dictionary
内这个items数组的每个JSON
的字典,所以你需要遍历items数组而不是遍历if let content = data {
if let json = (try? JSONSerialization.jsonObject(with: content, options: [])) as? [String:Any],
let items = json["items"] as? [[String:Any]] {
for item in items {
if let snippet = item["snippet"] as? [String:Any],
let title = snippet["title"] as? String {
print(title)
}
}
}
}
。
{{1}}