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";
}

когда я получаю доступ к их значениям в NSDIctionary, используя objectForKey, как показано ниже

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, но я не знаю, правильно ли это. Как я могу получить доступ к этим отдельным записям?


person Matt Douhan    schedule 05.06.2017    source источник
comment
Кажется, это NSArray для меня.   -  person Larme    schedule 05.06.2017
comment
Вы имеете в виду, что группы - это NSArray внутри NSDictionary?   -  person Matt Douhan    schedule 05.06.2017


Ответы (1)


Группы представляют собой массив, поэтому, когда вы выполняете вызов [objectForKey...], он возвращает данные, как и ожидалось. Я бы присвоил возвращаемый объект NSArray, поскольку он всегда должен возвращаться из этой модели данных в виде массива, даже если он содержит только один элемент. Если вам более любопытно, вы можете добавить точку останова и проверить ее в отладчике, метод [objectForKey...] ведет себя довольно интересно при преобразовании типов, и иногда результаты могут вас удивить.

person Nicholas Smith    schedule 05.06.2017