2016-04-26 91 views
0

我打電話給Spotify API方法來檢索用戶保存的曲目。在解析返回的數據,我叫Spotify返回無效的NSDictionary

let jsonObject = try NSJSONSerialization.JSONObjectWithData(dataFromNetwork, options: []) as! NSDictionary 

當我打印出來的結果我得到:

{ 
href = "https://api.spotify.com/v1/me/tracks?offset=0&limit=20"; 
items =  (
      { 
     "added_at" = "2016-04-17T18:35:07Z"; 
     track =    { 
      album =     { 
       "album_type" = album; 
       "available_markets" = 
    .... 
} 

某些鍵不是字符串。因此,當我嘗試瀏覽容器時,它會返回錯誤。

我第一次瀏覽到曲目與列表:

let tracks = jsonObject["items"] as! [NSDictionary] 

此代碼不會產生錯誤。然而,當我通過數組迭代,我嘗試訪問「姓名」鍵的軌道:

let title = track["name"] as! String 

此代碼導致程序崩潰,當我看JSON:

name = <redacted> 

有在關鍵和價值周圍都沒有雙引號。

+0

需要編碼這些字符串 –

+0

我該怎麼做呢? – genghiskhan

+0

哪個鍵不是字符串?你是如何確認的? – Larme

回答

1

這條線是一個有點太絕對:

let title = track["name"] as! String 

將其更改爲「if let」聲明:

if let title = track["name"] as? String 
{ 
    // do something if it's a valid title