gpt4 book ai didi

swift - 如果索引超出 SwiftyJSON 和 AlamoFire 范围,则继续下一个结果

转载 作者:行者123 更新时间:2023-11-30 11:31:43 24 4
gpt4 key购买 nike

我目前有一个文件名列表,我将其插入到 Alamofire.request 中,最终.append “videoId”来自 YouTube 的 JSON 文件。当我将搜索查询硬编码到我知道会产生视频结果的列表中时,效果很好。但不幸的是,列表中的某些文件名找不到任何视频。这会导致 fatal error :索引超出范围我希望找到一种方法,当“videoId”不可用时继续列表中的下一项。我尝试过elsecontinue等,但永远无法做到正确。所以这个例子没有尝试迭代错误的搜索

我是编码新手,所以如果我完全不熟悉,请随意更改。

这是我的代码。这是我的函数内部,它还获取我想要的文件名并将它们插入到 [String]

for i in testList {

Alamofire.request("https://www.googleapis.com/youtube/v3/search?key=\(API_Key)&part=snippet&q=\(i)%20Music%20Video&maxResults=1&type=video&order=relevance").responseJSON { (response) in

print("Result: \(response.result)")
var json = JSON(response.result.value as Any)
print(json)

if let _ = json["items"].array{


if json["items"].arrayValue[0]["id"].exists(){
let songPath = json["items"].arrayValue[0]["id"]
let videoIdPath = songPath["videoId"].stringValue
var arrayOfVideos = ""


arrayOfVideos.append(videoIdPath)
print(arrayOfVideos)
videoArray += [arrayOfVideos] }

这是 YouTube 请求上下文的响应

Result: SUCCESS
{
"items" : [
{
"etag" : "\"95M1zlW0txkV42I4OG1Zscxrg5A\/TwSmd4IGGf1uBi-y10rCaZ53JsU\"",
"kind" : "youtube#searchResult",
"id" : {
"kind" : "youtube#video",
"videoId" : "9jfhlttiQws"
},
"snippet" : {
"thumbnails" : {
"default" : {
"url" : "https:\/\/i.ytimg.com\/vi\/9jfhlttiQws\/default.jpg",
"width" : 120,
"height" : 90
},
"high" : {
"url" : "https:\/\/i.ytimg.com\/vi\/9jfhlttiQws\/hqdefault.jpg",
"width" : 480,
"height" : 360
},
"medium" : {
"url" : "https:\/\/i.ytimg.com\/vi\/9jfhlttiQws\/mqdefault.jpg",
"width" : 320,
"height" : 180
}
},
"channelId" : "UCdWVO7O7stk7MNKVARRV8rw",
"title" : "LUAM - Clockwork Indigo (The Flatbush ZOMBiES + The Underachievers) (LYRICS)",
"publishedAt" : "2014-10-19T01:37:31.000Z",
"description" : "LUAM by clockwork Indigo consisting of Beast Coast rap groups Flatbush ZOMBiES & The Underachiever off of their collaborative Debut Mixtape \"Clockwork ...",
"liveBroadcastContent" : "none",
"channelTitle" : "JayMendezTv"
}
}
],
"kind" : "youtube#searchListResponse",
"nextPageToken" : "CAEQAA",
"regionCode" : "US",
"pageInfo" : {
"resultsPerPage" : 1,
"totalResults" : 10073
},
"etag" : "\"95M1zlW0txkV42I4OG1Zscxrg5A\/KIryoSi8eZnM0UdfR0ZqyaHGB_k\""
}
9jfhlttiQws

最佳答案

没有人回答我的问题,但幸运的是我自己找到了解决方案。当未找到 Youtube 结果时,"items" 数组将为空,因为找不到 "videoId"。所以我所要做的就是在我的代码中添加一个 if 语句,如下所示

  if let items = json["items"].array{
if items.isEmpty{
return
}
else {

关于swift - 如果索引超出 SwiftyJSON 和 AlamoFire 范围,则继续下一个结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50185983/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com