0
我試圖使用上迅速3下面的代碼獲取YouTube頻道的詳細信息:錯誤加載YouTube頻道的詳細信息,返回nil
func getChannelDetails(_ useChannelIDParam: Bool) {
var urlString: String!
if !useChannelIDParam {
urlString = "https://www.googleapis.com/youtube/v3/channels?part=contentDetails,snippet&forUsername=\(desiredChannelsArray[channelIndex])&key=\(apiKey)"
}
else {
urlString = "https://www.googleapis.com/youtube/v3/channels?part=contentDetails,snippet&id=\(desiredChannelsArray[channelIndex])&key=\(apiKey)"
}
let targetURL = URL(string: urlString)
var request = URLRequest(url: targetURL!)
request.httpMethod = "GET"
let sessionConfig = URLSessionConfiguration.default
let session = URLSession(configuration: sessionConfig)
session.dataTask(with: request) { (data, response, error) in
DispatchQueue.main.async {
if error != nil {
do {
let resultsDict = try JSONSerialization.jsonObject(with: data!, options: []) as! Dictionary<String, AnyObject>
let items: AnyObject! = resultsDict["items"] as AnyObject!
let firstItemDict = (items as! Array<AnyObject>)[0] as! Dictionary<String, AnyObject>
let snippetDict = firstItemDict["snippet"] as! Dictionary<String, AnyObject>
var desiredValuesDict: Dictionary<String, AnyObject> = Dictionary<String, AnyObject>()
desiredValuesDict["title"] = snippetDict["title"]
desiredValuesDict["description"] = snippetDict["description"]
desiredValuesDict["thumbnail"] = ((snippetDict["thumbnails"] as! Dictionary<String, AnyObject>)["default"] as! Dictionary<String, AnyObject>)["url"]
desiredValuesDict["playlistID"] = ((firstItemDict["contentDetails"] as! Dictionary<String, AnyObject>)["relatedPlaylists"] as! Dictionary<String, AnyObject>)["uploads"]
self.channelsDataArray.append(desiredValuesDict)
self.tableView.reloadData()
self.channelIndex += 1
if self.channelIndex < self.desiredChannelsArray.count {
self.getChannelDetails(useChannelIDParam)
}
else {
self.activityView.isHidden = true
}
} catch {
print(error)
}
} else {
print("Error while loading channel details: \(error)")
}}
}.resume()
}
但是它總是返回以下錯誤:
Error while loading channel details: nil
我對swift很陌生,有人建議在代碼中打開option,但我不知道該怎麼做,我不確定這是否會成爲問題。
代碼有什麼問題?我正確實現了瀏覽器的Api密鑰。
我下面這個教程:https://www.appcoda.com/youtube-api-ios-tutorial/
'desiredChannelsArray'的類型是什麼? – Keiwan
var desiredChannelsArray = [「Google」,「Apple」] 這是數組字符串 – HichemRomdhane
好吧,這樣不會是問題。難道'apiKey'是一個隱含的解包可選項嗎? – Keiwan