Xcode JSON проблема - PullRequest
       25

Xcode JSON проблема

0 голосов
/ 21 марта 2012

У меня проблема с этим кодом прямо здесь:

- (void)fetchedData:(NSData *)responseData {
    //parse out the json data
    NSError* error;
    NSDictionary* json = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:&error];

    NSArray* announcements = [json objectForKey:@"clients"];

    NSLog(@"laag 1: %@", announcements);

    NSDictionary* announcement = [announcements objectAtIndex:0];

    NSNumber *status = [announcement objectForKey:@"status"];

    humanReadble.text = [NSString stringWithFormat:@"%@", status];
}

Я пытаюсь получить данные JSON с этого URL. Я знаю, что выборка работает, NSLog отображает ее нормально, но проблема начинается с NSDictionary. Я сделал несколько тестов с точками останова и обнаружил, что ошибка была там. Это обзор моего журнала:

2012-03-20 23:15:13.210 Json test 2[13248:f803] laag 1: {
    client =     (
                {
            companyname = xxx;
            datecreated = "2012-03-11";
            email = "xxxx";
            firstname = xxx;
            groupid = 0;
            id = 3;
            lastname = O;
            status = Active;
        },
                {
            companyname = "xxx";
            datecreated = "2012-03-02";
            email = "xxx";
            firstname = xxx;
            groupid = 0;
            id = 1;
            lastname = "xxx";
            status = Active;
        },
                {
            companyname = "";
            datecreated = "2012-03-08";
            email = "xxx";
            firstname = xxx;
            groupid = 0;
            id = 2;
            lastname = xxx;
            status = Active;
        },
                {
            companyname = xxx;
            datecreated = "2012-03-13";
            email = "xxx";
            firstname = xxx;
            groupid = 0;
            id = 4;
            lastname = "xxx";
            status = Active;
        }
    );
}
2012-03-20 23:15:13.212 Json test 2[13248:f803] -[__NSCFDictionary objectAtIndex:]: unrecognized selector sent to instance 0x6821f30
2012-03-20 23:15:13.213 Json test 2[13248:f803] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFDictionary objectAtIndex:]: unrecognized selector sent to instance 0x6821f30'
*** First throw call stack:
(0x13c7022 0x1558cd6 0x13c8cbd 0x132ded0 0x132dcb2 0x21a2 0x13c8e42 0x9379df 0x139b94f 0x12feb43 0x12fe424 0x12fdd84 0x12fdc9b 0x12b07d8 0x12b088a 0x11626 0x1c3d 0x1ba5)
terminate called throwing an exception(lldb)

Может кто-нибудь помочь мне?

Я использую SDK 5.1, Xcode 4.3 на Lion 10.7.3

1 Ответ

0 голосов
/ 21 марта 2012

Объект, возвращаемый [json objectForKey:@"clients"] в вашем коде, на самом деле является словарем, а не массивом. Сначала вам нужно извлечь "клиентский" объект (который вам нужен) из этого словаря. Вы можете сделать это так:

NSDictionary *clients = [json objectForKey:@"clients"];
NSArray *announcements = [clients objectForKey:@"client"];
NSDictionary* announcement = [announcements objectAtIndex:0];
...