0

我对这里的代码有疑问:

- (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];
}

我正在尝试从此 URL 获取 JSON数据。我知道获取工作,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)

有人可以帮我吗?

我在 Lion 10.7.3 上使用 sdk 5.1、xcode 4.3

4

1 回答 1

0

您的代码中返回的对象[json objectForKey:@"clients"]实际上是一个字典,而不是一个数组。首先,您需要从该字典中提取“客户”对象(这是您想要的数组)。你可以这样做:

NSDictionary *clients = [json objectForKey:@"clients"];
NSArray *announcements = [clients objectForKey:@"client"];
NSDictionary* announcement = [announcements objectAtIndex:0];
于 2012-03-20T22:34:43.460 回答