【问题标题】:I'm having trouble accessing the value I need from an NSDictionary object我无法从 NSDictionary 对象访问我需要的值
【发布时间】:2014-07-09 21:24:34
【问题描述】:

我在访问 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";
       };
   };
}

【问题讨论】:

    标签: objective-c


    【解决方案1】:

    您的示例字典中的 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.
        }
    }
    

    【讨论】:

    • 非常感谢!效果很好!
    猜你喜欢
    • 2020-09-17
    • 1970-01-01
    • 1970-01-01
    • 2021-06-05
    • 1970-01-01
    • 2021-06-22
    • 1970-01-01
    • 2012-06-25
    • 2016-05-12
    相关资源
    最近更新 更多