NSDictionary似乎有一个键的多个值,如何访问各个值?

时间:2017-06-05 10:02:33

标签: objective-c nsdictionary

我使用ADAL对Azure AD进行身份验证,它返回带有声明的字典,其中一个键是用户所属的组,

完整字典看起来像这样

2017-06-05 17:40:58.712 NWMobileTill[46676:3282242] userInfoStore Item all {
    alg = none;
    amr =     (
        pwd
    );
    aud = "042a00fc-b832-411f-xxxxxxxx";
    exp = xxxxxxx;
    groups =     (
        "xxx-9725-43f6-a502-xxxxx",
        "38c5b3af-xxx-4b38-b180-xxxx"
    );
    iat = xxx;
    ipaddr = "xx";
    iss = "https://xxxxxxx/xxx-d61d-xxx-a949-0cb72eff23be/";
    name = "POS Test";
    nbf = xxx;
    oid = "c44f91f2-xx-40bb-9624-xxx";
    platf = 2;
    sub = "xxxxx";
    tid = "b5154a9e-xxx-4d55-a949-xxx";
    typ = JWT;
    "unique_name" = "nwpos@xxxxxx";
    upn = "nwpos@xxxx";
    ver = "1.0";
}

当我使用objectForKey访问NSDIctionary中的值时,如下所示

NSDictionary *jongel = [result.tokenCacheStoreItem.userInformation.allClaims objectForKey:@"groups"];

我得到了这样的多个条目,

2017-06-05 17:40:58.712 NWMobileTill[46676:3282242] Groups are (
"xx-9725-43f6-a502-xx",
"xx-d0dc-4b38-xx-17555db6f626"
)

我很困惑,我可以获得多个值,如何访问每个值?我碰巧将此分配给NSDictionary,但我不知道这是否正确。我怎样才能获得这些个人参赛作品?

1 个答案:

答案 0 :(得分:2)

这些组是一个数组,因此当您执行[objectForKey...]调用时,它会按预期返回数据。我会将返回的对象分配给NSArray,因为它应始终作为数组从该数据模型返回,即使它只包含一个元素。 如果您更好奇,可以在调试器中添加断点并检查它,[objectForKey...]方法会围绕类型转换执行一些有趣的行为,有时结果可能会让您感到惊讶。