2015-01-19 2 views
-1

JSON 문자열에서 만든이 사전 정보를 얻으려고합니다. JSON 문자열은 서버에서 반환되고 사전에 저장됩니다. 그 사전은 myMethod로 넘어 가서 각 레코드에 포함 된 정보를 얻을 수 있습니다.NSArray의 NSDictionary를 Objective-C의 JSON에서 파싱합니다.

"레코드 세트"는 배열입니다. 레코드는 또한 사전의 배열입니다.

사전은 어떻게 구합니까? 나는 NSDictionaryM objectAtIndex가 계속 : 인식 할 수없는 선택기 인스턴스에 전송

Recordset =  (
    { 
    Record =    (
     { 
      MODMAKlMakeKey = 1112; 
      MODlModelKey = 1691; 
      MODvc50Name = "10/12 Series 2"; 
    }, 
    { 
      MODMAKlMakeKey = 1112; 
      MODlModelKey = 1687; 
      MODvc50Name = "10/4"; 
    }, 
    { 
      MODMAKlMakeKey = 1112; 
      MODlModelKey = 1686; 
      MODvc50Name = "10/6"; 
    }, 

등 등 ... (약 100 기록)

다음

내가 가진 무엇

- (void) myMethod : (NSDictionary*) dictionary { 

    //INITIAL 
    NSArray * arrRecordSet = [dictionary objectForKey:@"Recordset"]; 
    NSArray * arrRecord  = [arrRecordSet objectAtIndex:0]; 
    NSDictionary * theRecord = [NSDictionary dictionaryWithObjects:arrRecord forKeys:[arrRecord objectAtIndex:0]]; 
    for (int i = 0; i < arrRecord.count; i++) { 
     NSLog(@"MODMAKlMakeKey: %@", [theRecord objectForKey:@"MODMAKlMakeKey"]); 
    } 

} 
+3

봐보십시오. 'Recordset'는 배열 배열이 아니라 사전 배열을 제공합니다. – rmaddy

+0

OMG DUH! 나는 지난 1 시간 동안 내 자신을 때리고 있었다! 감사! –

+1

메시지 읽기 !!!! –

답변

-1

[objectForKey : @ "Recordset"]의 반환이 실제로 사전인지 배열인지 확인해보십시오.

이 작업을 수행하려면

if([[dictionary objectForKey:@"Recordset"] isKindOfClass:[NSArray class]]) { 
     //object is array 
    } 
    else if ([[dictionary objectForKey:@"Recordset"] isKindOfClass:[NSDictionary class]]) { 
     //object is dictionary 

    } 
+0

이것은 문제가되지 않습니다. 'Recordset'는 배열을 반환합니다. JSON을 살펴보십시오. – rmaddy

0

는 JSON에서이

NSArray * arrRecord = [arrRecordSet objectForKey:@"Record"];