【问题标题】:Continue to next result if Index out of range SwiftyJSON & AlamoFire如果索引超出范围 SwiftyJSON 和 AlamoFire,则继续下一个结果
【发布时间】:2018-05-05 05:18:24
【问题描述】:

我目前有一个文件名列表,我将这些文件名插入到 Alamofire.request 到最终 .append 和来自 Youtube 的 JSON 文件的 "videoId" 中。当我将搜索查询硬编码到我知道会产生视频结果的列表中时,它的效果很好。但不幸的是,列表中的某些文件名没有找到任何视频。这导致fatal error: Index out of range"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

【问题讨论】:

    标签: swift alamofire swifty-json


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2022-10-22
      • 2021-06-01
      • 2014-01-16
      • 2021-06-26
      • 1970-01-01
      • 1970-01-01
      • 2019-04-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多