在Swift 2中一切正常,但在Swift 3升級後它失敗了。它只是給了以下錯誤:類型「任何」沒有下標成員/ Swift 3
Type "Any" has no subscript members
以下行:
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()
}
}
})
}
}
嘿,你有沒有解決這個問題,如果是的話請分享最終答案。我有完全相同的錯誤。我也使用完全相同的代碼。修復此錯誤後請分享最終的代碼。謝謝 – user3707644
請看看這個:cl.ly/02030q1Q0E10。讓我知道你是否需要進一步的信息。 –
你可以分享整個課程的源代碼嗎?我仍然有問題:如果讓JSON = response.result.value爲? NSArray,它總是假的 – user3707644