Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/113.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“类型”;任何;在alamofire 4 iOS swift中没有下标成员_Ios_Swift_Alamofire - Fatal编程技术网

“类型”;任何;在alamofire 4 iOS swift中没有下标成员

“类型”;任何;在alamofire 4 iOS swift中没有下标成员,ios,swift,alamofire,Ios,Swift,Alamofire,我知道这个问题可以重复。但我试图找到解决问题的办法。不幸的是,我没有找到正确的答案。这就是我所做的 我试图使用alamofire访问Youtube数据。在我看来 let API_KEY = "**************" let UPLOADS_PLAYLIST_ID = "PLqQMDoH89jqEoHMTsxxyMz1Hym_pOViq6" let CHANNEL_ID = "UCcMUpFCaFhlyjZyy9d9LeRA" let parameters

我知道这个问题可以重复。但我试图找到解决问题的办法。不幸的是,我没有找到正确的答案。这就是我所做的

我试图使用alamofire访问Youtube数据。在我看来

    let API_KEY = "**************"
    let UPLOADS_PLAYLIST_ID = "PLqQMDoH89jqEoHMTsxxyMz1Hym_pOViq6"
    let CHANNEL_ID = "UCcMUpFCaFhlyjZyy9d9LeRA"
    let parameters = ["part":"snippet","channelId":CHANNEL_ID,"playListId":UPLOADS_PLAYLIST_ID,"key":API_KEY]

    Alamofire.request("https://www.googleapis.com/youtube/v3/playlists", parameters: parameters, encoding: URLEncoding.default, headers: nil).responseJSON { (response) in

        if let JSON = response.result.value{

            for video in JSON["item"] as! NSArray {
                print(video)
            }

        }
    }
这是给我的错误类型“any”没有下标成员

我也尝试了另一种方法,但这也给了我错误

  Alamofire.request("https://www.googleapis.com/youtube/v3/playlists", 
    parameters: parameters, encoding: URLEncoding.default, headers: 
   nil).responseJSON { (response) in



        switch(response.result) {
        case .success(_):
            if let JSON = response.result.value as! [[String : Any]]!{
                for video in JSON["item"] as! NSArray {
                                      print(video)
                 }
            }
            break

        case .failure(_):
            print("There is an error")
            break
        }

    }

这是一个错误提示,不能用string类型的索引下标“[[string:any]]”类型的值。您不能对任何变量类型重新强制转换,您可以使用[string:[string:any]]进行强制转换。

在此处发布:
如果让JSON=response.result.value为![[String:Any]]

第一:如果使用可选链接(
if-let
),请不要使用强制转换(
as!
[[String:Any]]!

其次,JSON不是
字典
,而是
字典
数组

试试看:
如果让JSON=response.result.value为?[字符串:任意]

还有,当你尝试

if let JSON = response.result.value{

    for video in JSON["item"] as! NSArray {
    print(video)
    }
}

您没有将
JSON
变量强制转换为
Dictionary
,您只需检查
JSON
是否为空。

那么我现在应该怎么做?直接转换为NSArray或NSDictionnary之类的类型。如果您确实喜欢使用[:]方法进行强制转换,只需根据类型更改any,例如[String:[String:String]]现在我尝试这种方法现在我尝试这种方法,如果让JSON=response.result.value as?[String:Any]{for video in JSON[“item”]as!NSArray{print(video)}}但出现此致命错误致命错误:在展开可选值读取JSON时意外发现nil。这很简单。集合类型只有两种:数组(
[]
)和字典(
{}
)。这个JSON显然是从一个字典开始的。现在我尝试这种方式,现在我尝试这种方式,如果让JSON=response.result.value作为?[String:Any]{for video in JSON[“item”]as!NSArray{print(video)}}但出现此致命错误致命错误:在展开可选值时意外发现nil现在该怎么办。我真的很困惑,看起来您的JSON不包含“item”元素。编辑您的问题并在那里发布您的JSON