NSDictionary 似乎一个键有多个值,我如何访问各个值?
Posted
技术标签:
【中文标题】NSDictionary 似乎一个键有多个值,我如何访问各个值?【英文标题】:NSDictionary seems to have multiple values for one key, how do I access the individual values? 【发布时间】:2017-06-05 10:02:32 【问题描述】:我正在使用 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 但我不知道这是否正确。如何访问这些单独的条目?
【问题讨论】:
对我来说似乎是一个 NSArray。 您的意思是这些组是 NSDictionary 中的 NSArray? 【参考方案1】:组是一个数组,因此当您调用[objectForKey...]
时,它会按预期返回数据。我会将返回的对象分配给NSArray
,因为它应该始终从该数据模型作为数组返回,即使它只包含一个元素。
如果您比较好奇,可以在其中添加断点并在调试器中检查它,[objectForKey...
] 方法围绕类型转换做了一些有趣的行为,有时结果可能会让您感到惊讶。
【讨论】:
以上是关于NSDictionary 似乎一个键有多个值,我如何访问各个值?的主要内容,如果未能解决你的问题,请参考以下文章
sortUsingComparator 在 NSMutableArray 中的 NSDictionary 上具有多个 objectKeys