2012-04-04 1 views
0

JSON을 제공하는 RESTful API가 있습니다. 나는 이런 식으로 전화 해요 :JSON은 사전에 멋지게 들어갑니다. 그러나 objectForKey 오류

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 
    dispatch_async(kBgQueue, ^{ 
     NSData* data = [NSData dataWithContentsOfURL: 
         kProjectList]; 
     [self performSelectorOnMainThread:@selector(fetchedData:) 
           withObject:data waitUntilDone:YES]; 
    }); 
} 

가 그럼 난 내 fetchedData 방법이있다 : 그것으로

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

          options:kNilOptions 
          error:&error]; 
    //NSArray *projects = [json objectForKey:@"name"]; //2 

    NSLog(@"name: %@", json); //3 
} 

내가 //있는 NSArray 라인의 주석을 해제하면 내가 할 -[__NSCFArray objectForKey:]: unrecognized selector sent to instance 0x6d81720

이 주석, 내 사전 로그 :

(
     { 
     "created_at" = "2012-04-04T01:46:51Z"; 
     description = "First Project Created"; 
     id = 1; 
     name = "Test 1"; 
     "updated_at" = "2012-04-04T01:46:51Z"; 
    }, 
     { 
     "created_at" = "2012-04-04T01:47:23Z"; 
     description = "Second Project Created"; 
     id = 2; 
     name = "Test 2"; 
     "updated_at" = "2012-04-04T01:47:23Z"; 
    } 
) 
+0

NSArray를 가지고있는 다른 유사한 문제를 읽었습니다. NSDictionary가 있어야합니다. 이 변경 작업을 수행하면 정확한 오류 (다른 인스턴스 0x ####### 분명히)가 발생합니다. –

+0

그리고 당신의 질문은 ...? –

답변

1

배열 사전이 아니라 사전이 있습니다. objectForKey 대신 objectAtIndex를 사용하고 사전에 지정하십시오. 다음과 같이하십시오 :

NSDictionary *projects = [[json objectAtIndex:0] objectForKey:@"name"]; 
+0

감사! NSArray를 NSArray로 변경 한 다음 위의 코드를 사용하면 완벽하게 작동합니다. 고맙습니다. –