2012-03-20 6 views
0

私は右ここにこのコードに問題があります:XcodeのJSONのトラブル

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

私はthis 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) 

誰かが私を助けてくれますか?あなたのコードで[json objectForKey:@"clients"]によって返さ

私はSDK 5.1を使用し

、ライオン10.7.3

答えて

0

上のXcode 4.3のオブジェクトは、実際には、辞書、ない配列です。まず、その辞書から "クライアント"オブジェクト(必要な配列)を抽出する必要があります。

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

TNXのでドロドロ:あなたはこのようにそれを行うことができます!魅力的に働いた! – Roeliee