Как получить значения от неизвестного ключа в NSDictionary iphone? - PullRequest
0 голосов
/ 25 ноября 2011

У меня есть еще одна большая проблема при разборе значений из ответа Webservice.Я не знаю ключ для значений в ответе веб-службы.Например,

class =     (
                {
            "ObjectiveC" =   
         (
                                {
                    "brief_desc" = "ObjectiveC";
                    date = "2008-02-27";
                    "event_status" = Attended;
                },
                                {
                    "brief_desc" = "ObjectiveC";
                    date = "2008-03-05";
                    "event_status" = Attended;
                },
                                {
                    "brief_desc" = "ObjectiveC";
                    date = "2008-03-12";
                    "event_status" = Missed;
                },
            ); 
        },
                {
            "Java" =             (
 {
                    "brief_desc" = "Java";
                    date = "2008-02-27";
                    "event_status" = Attended;
                },
                                {
                    "brief_desc" = "Java";
                    date = "2008-03-05";
                    "event_status" = Attended;
                },
                                {
                    "brief_desc" = "Java";
                    date = "2008-03-12";
                    "event_status" = Missed;
                },
            );
        }
    );

В этом ответе даже мы не знаем ключей "ObjectiveC" и "Java".Ключи («ObjectiveC и Java») должны быть изменены в каждом восстановленном ответе.Как получить значения ключа (Неизвестный ключ)?Как я могу разобрать этот ответ и получить значения?

Ответы [ 2 ]

3 голосов
/ 27 ноября 2011

Я бы перечислил ключи, чтобы получить значение. Вот пример перечисления в target-c.

NSEnumerator *enumerator = [myDictionary keyEnumerator];
id key;
while ((key = [enumerator nextObject])) {
    //assuming value will be string
    NSString *valueForKey = [myDictionary valueForKey:key]; 

    //assuming value is another dictionary
    NSDictionary *subDictionary = [myDictionary objectForKey:key];
}

И если вы не знаете ключей под-словарей, вы также можете перечислить их.

3 голосов
/ 25 ноября 2011

NSDictionary имеет - (NSArray *)allKeys и - (NSArray *)allValues. Один из них может помочь

NSDictionary * lessonDict = [[NSDictionary alloc] initWithObjectsAndKeys:@"Key", @"Value", @"Key 2", @"Value 2", nil];
    NSArray *values = [lessonDict allValues];

    NSArray *keys = [lessonDict allKeys];
    NSLog(@"Keys: %@",keys);
    NSLog(@"Values: %@",values);
...