NSDictionary tampaknya memiliki banyak nilai untuk satu kunci, bagaimana cara mengakses nilai individual?

Saya menggunakan ADAL untuk mengautentikasi ke Azure AD, ia mengembalikan kamus dengan klaim, salah satu kuncinya adalah grup tempat pengguna menjadi anggotanya,

Kamus lengkapnya terlihat seperti ini

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

ketika saya mengakses nilainya di NSDIctionary menggunakan objectForKey seperti di bawah ini

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

Saya mendapatkan banyak entri seperti ini,

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

Saya bingung karena saya bisa mendapatkan banyak nilai, bagaimana cara mengakses setiap nilai individual? Saya kebetulan menugaskan ini ke NSDictionary tetapi saya tidak tahu apakah itu benar. Bagaimana saya bisa mendapatkan entri individual tersebut?


person Matt Douhan    schedule 05.06.2017    source sumber
comment
Tampaknya menjadi NSArray bagi saya.   -  person Larme    schedule 05.06.2017
comment
maksud Anda grup tersebut adalah NSArray di dalam NSDictionary?   -  person Matt Douhan    schedule 05.06.2017


Jawaban (1)


Grup adalah sebuah array, jadi ketika Anda melakukan panggilan [objectForKey...], ia mengembalikan data seperti yang diharapkan. Saya akan menetapkan objek yang dikembalikan ke NSArray karena objek tersebut harus selalu dikembalikan dari model data tersebut sebagai array, meskipun hanya berisi satu elemen. Jika Anda lebih penasaran, Anda dapat menambahkan breakpoint dan memeriksanya di debugger, metode [objectForKey...] melakukan beberapa perilaku menarik seputar konversi tipe dan terkadang hasilnya mungkin mengejutkan Anda.

person Nicholas Smith    schedule 05.06.2017