2013-04-07 2 views
0

JSON을 구문 분석 한 후 NSDictionary에서 호출 한 내용을 반환하는 REST-api가 있습니다.인덱스로 NSDictionary 읽기

이로 기록됩니다

2013-04-07 23:43:25.008 MyApp[15133:c07] (
     { 
     id = 1; 
     name = "The best of NTNU"; 
     type = 1; 
    }, 
     { 
     id = 2; 
     name = "Forever alone"; 
     type = 1; 
    } 
) 

은 내가 사용할 수있는 NSDict로 DICT의 첫 번째 수준을 갖고 싶어. 문제는 내가 이것을 잡으려고해도 (valueForKey, objectForKey) 응용 프로그램이 충돌한다는 것입니다.

memory-inspector에 따르면이 NSDict [0]과 [1]의 "자식"이지만 어떻게해야하는지 잘 모릅니다.

답변

3

JSON은 실제로 NSDictionary가 아닌 NSDictionary의 NSArray를 반환합니다.

은 첫 번째 수준을 얻으려면, 당신은 배열의 첫 번째 인덱스를 얻을 필요가 :

NSArray처럼 보이는
NSArray *json = [NSJSONSerialization .... 
NSDictionary *firstLevel = json[0]; // or [json objectAtIndex:0]; 
+0

아, 네 말이 맞아. 그것은 json의 하위 레벨에서 모든 키와 값을 제거했기 때문에 발생했습니다. 그래서 NSArray가 남았지 만 NSDict로 정의했습니다. NSJSONSerialization의 문서에 따르면 NSDict를 반환해야합니다. – OptimusCrime

+0

JSON의 구조에 따라 다릅니다. 일반적으로 NSDictionary를 반환합니다. –

0

(아무 키를 ... 없기 때문에), 그래서 당신은 처음에 액세스 할 수 있습니다 사전에 objectAtIndex: 선택자를 사용합니다.

NSDictionary * dict0 = [array objectAtIndex:0] 
0

실제로는 NSArrayNSDictionary입니다.