получить значение в NSDictionary - PullRequest
7 голосов
/ 11 августа 2011

Я хочу получить значение от NSDictionary. Я хочу управлять ключом «Код» в соответствии с ключом Код, я получу базовые значения. Я получаю сообщение об ошибке, когда пытаюсь использовать разные методы.

СООБЩЕНИЕ ОБ ОШИБКЕ

2011-08-11 12: 45: 21.549 AOK [6312: 207] - [__ NSArrayM getObjects: andKeys:]: нераспознанный селектор отправлен в экземпляр 0x5e138b0 2011-08-11 12: 45: 21.550 AOK [6312: 207] * Завершение приложения из-за необработанное исключение 'NSInvalidArgumentException', причина: '- [__ NSArrayM getObjects: andKeys:]: нераспознанный селектор, отправленный экземпляру 0x5e138b0' * стек вызовов при первом броске:

NSDictionary

(
        {
        Omschrijving = "ADDD";
        Ophaaldata =         {
            Datum =             (
                "2011-07-04",
                "2011-07-11",
                "2011-07-18",
                "2011-07-25"
            );
        };
    },
        {
        Omschrijving = "BBBB";
        Ophaaldata =         {
            Datum =             (
                "2011-07-05",
                "2011-07-12",
                "2011-07-19",
                "2011-07-26"
            );
        };
    },
        {
        Omschrijving = "KKKK";
        Ophaaldata =         {
            Datum =             (
                "2011-07-07",
                "2011-07-14",
                "2011-07-21",
                "2011-07-28"
            );
        };
    },
        {
        Omschrijving = "LLLLL";
        Ophaaldata =         {
            Datum =             (
                "2011-07-01",
                "2011-07-08",
                "2011-07-15",
                "2011-07-22",
                "2011-07-29"
            );
        };
    },
        {
        Omschrijving = "MMMMM";
        Ophaaldata =         {
            Datum =             (
                "2011-07-01",
                "2011-07-15",
                "2011-07-29"
            );
        };
    },
        {
        Code = POP;
        Omschrijving = "FFFF";
        Ophaaldata =         {
            Datum = "2011-07-12";
        };
    },
        {
        Code = 00;
        Omschrijving = "SSSS";
        Ophaaldata =         {
            Datum =             (
                "2011-07-14",
                "2011-07-27"
            );
        };
    },
        {
        Code = 01;
        Omschrijving = "CCCCC";
        Ophaaldata =         {
            Datum =             (
                "2011-07-06",
                "2011-07-20"
            );
        };
    }
)

Ответы [ 3 ]

10 голосов
/ 11 августа 2011

Отображается NSArray NSDictionaries, каждый из которых содержит строку NSS с описанием (Omschrijving) и NSDictionary (Ophaaldata) с одним ключом (Datum), который представляет собой массив дат.Если вы отправите Objects:andKeys: в NSArray, он не будет работать.

Вот несколько примеров того, как вы можете получить отдельные элементы:

NSArray          *dicts = ...; // wherever you get the array
  NSDictionary   *mijnDict = [dicts objectAtIndex: n];
    NSString     *omschrijving = [mijnDict objectForKey: @"Omschrijving"];
    NSDictionary *ophaaldata = [mijnDict objectForkey: @"Ophaaldata"];
      NSArray    *datum = [ophaaldata objectForkey: @"Datum"];
        NSString *eersteDatum = [datum objectAtIndex: 0];

Это только примерыо том, как вы можете обратиться к пунктам.Но это структура, которую показывает ваш вывод.В любом случае, все остальное будет бесполезно, так как словарь может содержать каждый ключ только один раз.Я немного отформатировал код, чтобы вы могли лучше видеть структуру.

2 голосов
/ 17 мая 2012

Во время ответа Имейте в виду значение строк

{ .......... } indicates dictionary.
(............) indicates array.
Dictionary always have key with it like somename = "value in it", .......
Array has value seperated by comma like a , b , c .....
Now it is possible it may have array into dictionary like { somekey = ( a,b,c) } and vice versa
1 голос
/ 11 августа 2011
reason: '-[__NSArrayM getObjects:andKeys:]: 

Вы уверены у вас есть NSDictionary, а не NSArray?

...