func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {
let urlRequest = URLRequest(url: URL(string: "https://www.googleapis.com/youtube/v3/channels?part=id&forUsername=\(searchBar.text!.replacingOccurrences(of: " ", with: "%20"))&key=1234")!)
let task = URLSession.shared.dataTask(with: urlRequest) { (data, response, error) in
if error == nil {
do {
let json = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers) as! [String : AnyObject]
if let items = json["items"] as? [String : AnyObject] {
if let id = items["id"] as? Int {
self.id = id
}
}
if let _ = json["error"] {
self.exists = false
}
DispatchQueue.main.async {
if self.exists{
print("\(self.id)")
}else {
self.exists = true
}
}
} catch let jsonError {
print(jsonError.localizedDescription)
}
}
}
task.resume()
}
我想从谷歌分析中获取Youtube频道 id ,但它一直在说" nil" 。我不确定我做错了什么,因为我的网站上的一切都是一样的!请帮忙!感谢
答案 0 :(得分:0)
当我使用你的代码时,我得到的JSON是
if ( ! get_option( 'initial_rewrites_setup_flush' ) ) {
flush_rewrite_rules( true );
update_option( 'initial_rewrites_setup_flush', true );
}
所以,{
"kind": "youtube#channelListResponse",
"etag": "\"m2yskBQFythfE4irbTIeOgYYfBU/uX-2P6nRpmv4I_ZWtiIyofqF5ss\"",
"pageInfo": {
"totalResults": 1,
"resultsPerPage": 5
},
"items": [
{
"kind": "youtube#channel",
"etag": "\"m2yskBQFythfE4irbTIeOgYYfBU/3W7RccGn0o-nTtgCGrEvd-AbX6Y\"",
"id": "UCfpqR6vgT_mzWrbXcTYxL8w"
}
]
}
不是Int。试试
items["id"]
代替
另外,将 if let id = items["id"] as? String
更改为String。
更新:
另外,
self.id
因为项目是一系列词典而无法工作。
你需要
if let items = json["items"] as? [String : AnyObject] {
然后,
if let items = json["items"] as? [[String : AnyObject]] {
你应该检查items.count,但是一旦你开始工作就可以做到。