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 似乎一个键有多个值,我如何访问各个值?的主要内容,如果未能解决你的问题,请参考以下文章

从每个键有多个值的字典中调用特定的字典值,Python

从 Swift 中的 NsDIctionary 获取价值

使用具有多个值的键创建 NSDictionary

NSDictionary objectForKey 返回值

sortUsingComparator 在 NSMutableArray 中的 NSDictionary 上具有多个 objectKeys

尝试从 json 创建的 nsdictionary 访问信息