2016-04-26 60 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