我无法从NSDictionary对象访问我需要的值

时间:2014-07-09 21:24:35

标签: objective-c

我无法在NSDictionary对象中访问我需要的值,一首歌曲在track键下有多个值,但由于词典不可索引,我无法访问这些值个别。我已经尝试将轨道密钥的对象存储为数组,但是这两个条目成为单个字符串条目,因此该数组的长度仅为1,没有用。

另外,做一些像[response valueForKeyPath @" response.songs.tracks.foreign_id"]这样的东西给了我两个外国的ID,我怎么能得到第一个?我已经在这方面苦苦挣扎了一段时间,已经在stackoverflow周围搜索了答案,但没有一个有效,感谢任何帮助,谢谢!

这是NSDictionary中的数据:

{
    response = {
        songs = (
                    {
            "artist_foreign_ids" =                 (
                                    {
                    catalog = spotify;
                    "foreign_id" = "spotify:artist:6vWDO969PvNqNYHIOW5v0m";
                }
            );
            "artist_id" = AR65K7A1187FB4DAA4;
            "artist_name" = "Beyonc\U00e9";
            id = SOUTJIT142F256C3B5;
            title = "Partition (Explicit Version)";
            tracks =                 (
                                    {
                    catalog = spotify;
                    "foreign_id" = "spotify:track:2vPTtiR7x7T6Lr17CE2FAE"; //I WANT TO ACCESS JUST THIS VALUE
                    "foreign_release_id" = "spotify:album:1hq4Vrcbua3DDBLhuWFEVQ";
                    id = TRLHJRD1460052F846;
                },
                                    {
                    catalog = spotify;
                    "foreign_id" = "spotify:track:6m4ZFQb3zPt3IdRDTN3tfb";
                    "foreign_release_id" = "spotify:album:5KPpho7rztJrZVA9yXjk8K";
                    id = TRYMBSK146005C3A46;
                }
            );
        }
    );
       status =         {
           code = 0;
           message = Success;
           version = "4.2";
       };
   };
}

1 个答案:

答案 0 :(得分:0)

示例字典中的tracks似乎已经是一个数组(字典),所以你应该可以做类似的事情:

NSArray *songs = response[@"songs"];
for (NSDictionary *songDict in songs) {
    NSArray *tracks = songDict[@"tracks"];
    for (NSDictionary *trackDict in tracks) {
        NSString *trackForeignId = trackDict[@"foreign_id"];
        // Do whatever you like with trackForeignId here.
    }
}