使用YouTubeAPI获取YouTube视频的标题

时间:2017-05-15 16:06:11

标签: ios json swift youtube-api

我正在使用YouTube API从频道中获取视频,我想获得标题:

    let url = URL(string: "https://www.googleapis.com/youtube/v3/search?key=**********&channelId=UCFNHx0ppCqm4EgPzEcOc29Q&part=snippet,id&order=date&maxResults=50")
    let task = URLSession.shared.dataTask(with: url!) { (data, reponse, error) in

        if error != nil {
            print("ERROR")
        }else{
            if let content = data {
                do{
                    if let myJsonArray = try JSONSerialization.jsonObject(with: content, options: JSONSerialization.ReadingOptions.mutableContainers) as? [String:Any] {
                        if let itemsJson = myJsonArray["items"] as? [[String:Any]] {
                            //var i:Int = 0

                            for i in 0 ..< itemsJson.count {
                                 print("-----------------------------")
                                let snippetDict = itemsJson[i]["snippet"] as! Dictionary<NSObject, AnyObject>
                                print(snippetDict["title"] as String) //NOT WORKING
                             }
                        }
                    }
                }catch{
                    print("ERROR 2")
                }
            }
        }

    }
    task.resume()

但是当我将所有标题打印为print(snippetDict["title"] as String)时,Xcode会说:

  

对成员&#39;下标&#39;`的模糊引用。

如何获取视频标题?

谢谢!

1 个答案:

答案 0 :(得分:1)

尝试使用String作为密钥(而不是NSObject):

let snippetDict = itemsJson[i]["snippet"] as! [String: AnyObject]

我怀疑冲突来自这两个Dictionary 下标(当使用String作为密钥时):

subscript(key: NSObject) -> Value?
subscript(key: _Hashable) -> Value?

尽管如此,如果你的字典是基于字符串的,那么你应该使用String密钥来输入 :)

顺便说一句,[Key: Value]只是语法糖,用于更长的Dictionary<Key, Value>显式类型名称。