以前はJSONデータに問題がありましたが、下方に;致命的なエラー:オプションの値をアンラッピングしている間に予期せぬエラーが発生しました//(JSON as!NSDictionary)["items"]
Ambiguous use of 'subscript' with NSArray & JSON
それはしばらくの間、正常に動作しましたが、今では致命的なエラーを返して次の行にオプションの値をアンラップしながら、予想外にnilを見つけ:(!NSDictionaryのようJSON)でビデオの[ "items"]として! NSArray {。これに関する提案はありますか?私はそれがmaxresを持っていないサムネイルに関連しているかもしれないと思ったが、それをデフォルトまたはハイに変更してもうまくいかなかった。
let API_KEY = "BrowserKey"
let UPLOADS_PLAYLIST_ID = "playlistID"
var videoArray = [Video]()
var delegate: VideoModelDelegate?
func getFeedVideos() {
//Fetch the videos dynamically through the Youtube DATA API
Alamofire.request(.GET, "https://www.googleapis.com/youtube/v3/playlists", parameters: ["part":"snippet", "playlistId":UPLOADS_PLAYLIST_ID,"key":API_KEY], encoding: ParameterEncoding.URL, headers: nil).responseJSON { (response) -> Void in
if let JSON = response.result.value {
var arrayOfVideos = [Video]()
for video in (JSON as! NSDictionary)["items"] as! NSArray {
// create video objects off of the JSON response
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.default.url") as! String
arrayOfVideos.append(videoObj)
}
//when all the video objects constructed, assign the array to the VideoModel property
self.videoArray = arrayOfVideos
//Notify the delegate that the data is ready
if self.delegate != nil {
self.delegate?.dataReady()
}
}
}
(a) 'JSON'は辞書ではありませんでした。 (b)キーの「アイテム」で何も見つかりませんでした。 (c)何かを見つけましたが、配列ではありませんでした。あなたはこれらの状況を一つずつテストしなければなりません(例えば ''ガード ')し、どれが保持していないかを見なければなりません。 – Rob
私はちょうどこれらの問題のために[this](https://github.com/romainmenke/Jenerator)を作成しました。 JSONレスポンスをマップするには多くの時間がかかります。このcliはJSONの素早いモデルを作成します。多分それは助けます。 –