我使用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,但我不知道这是否正确。我怎样才能获得这些个人参赛作品?
答案 0 :(得分:2)
这些组是一个数组,因此当您执行[objectForKey...]
调用时,它会按预期返回数据。我会将返回的对象分配给NSArray
,因为它应始终作为数组从该数据模型返回,即使它只包含一个元素。
如果您更好奇,可以在调试器中添加断点并检查它,[objectForKey...
]方法会围绕类型转换执行一些有趣的行为,有时结果可能会让您感到惊讶。