2016-04-26 1 views
0

Я вызываю метод Spotify API для извлечения сохраненных треков пользователя. В процессе анализа возвращаемые данные, я называюSpotify Returns Invalid 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