【发布时间】:2016-09-28 17:35:00
【问题描述】:
在 Swift 2 中一切正常,但在 Swift 3 升级后却失败了。它只是给出以下错误:
类型“Any”没有下标成员
在下面一行:
for video in JSON["items"] as? NSArray {
我之前的问题和解决方法可以在这里找到:
Ambiguous use of 'subscript' with NSArray & JSON
我在输入问题时也查看了建议的问题和答案,但到目前为止还没有找到解决方案。
class videoModel: NSObject {
let API_KEY = "Xxxxxxxxxxx"
let UPLOADS_PLAYLIST_ID = "yyyyyyyyyyyyyyy"
var videoArray = [Video]()
var delegate: VideoModelDelegate?
let urladdress = "https://www.googleapis.com/youtube/v3/playlistItems"
func getFeedVideos() {
Alamofire.request((urladdress), method: .get, parameters: ["part":"snippet", "playlistId": UPLOADS_PLAYLIST_ID,"key": API_KEY, "maxResults": "50"], encoding: JSONEncoding.default).responseJSON(completionHandler: { (response) -> Void in
if let JSON = response.result.value {
var arrayOfVideos = [Video]()
print(JSON)
for video in JSON["items"] as? NSArray {
let videoObj = Video()
videoObj.videoId = video.valueForKeyPath("snippet.resourceId.videoId") as! String
videoObj.videoTitle = video.valueForKeyPath("snippet.title") as! String
videoObj.videoDescription = video.valueForKeyPath("snippet.description") as! String
videoObj.videoThumbnailUrl = video.valueForKeyPath("snippet.thumbnails.maxres.url") as! String
arrayOfVideos.append(videoObj)
}
self.videoArray = arrayOfVideos
if self.delegate != nil {
self.delegate?.dataReady()
}
}
})
}
}
【问题讨论】:
-
嘿,你解决了这个问题吗,如果是,请分享最终答案。我有完全相同的错误。我也在使用完全相同的代码。请在修复此错误后分享最终代码。谢谢
-
请看这个:cl.ly/02030q1Q0E10。如果您需要更多信息,请告诉我。
-
你能分享课程的完整源代码吗?我仍然有问题:如果让 JSON = response.result.value as? NSArray,总是假的
-
请在下面的链接中找到完整的源代码; dl.dropboxusercontent.com/u/20847754/videoModel.swift
-
嘿,你能和我分享整个项目吗?我真的很难修复它。我尝试了一切来运行,但我仍然遇到项目问题。请帮我。谢谢