2012-06-05 3 views
0

안녕하세요 저는 webservice 용 json String을 작성했으며 NSLog에 표시하기 위해 이름과 설명을 출력하고 싶습니다. 내가 어떻게 할 수 있지. 지금까지 Heres는 내 코드 :json에서 값을 가져 와서 NSLog에 표시 할 수 있습니다.

dic = [NSJSONSerialization JSONObjectWithData:result options:kNilOptions error:nil]; 


NSLog(@"Results %@",[NSString stringWithFormat:@"%@",[[dic objectForKey:@"d"]objectForKey:@"Name"]]); 

내가이 오류를 얻을 다음 werbservice에서

{ 
d = "{ 
\n \"Name\": \"Apple\", 
\n \"Beschreibung\": \"Steve Jobs ist tot\"}"; 
} 

내 JSON 문자열 : 내 사전에 NSLog을 할 때

-[__NSCFString objectForKey:]: unrecognized selector sent to instance 0x6b50f30 

을 나는이를 얻을 수 다음과 같이 표시됩니다.

string json = @"{ 
""Name"": ""Apple"", 
""Beschreibung"": ""Steve Jobs ist tot""}"; 
+0

귀하의 웹 서비스는 JSON 문자열을 반환합니다. 문자열의 * 내용 *은 사전의 JSON 표현입니다. 즉, 사전이 문자열로 직렬화 된 다음 해당 문자열이 JSON 표현으로 직렬화되었습니다. –

답변

1

그의 중첩 된 로깅의 종류 :

NSLog(@"Results %@",[NSString stringWithFormat:@"%@",[[dic objectForKey:@"d"]objectForKey:@"Name"]]); 

은 정말 까다 롭습니다. 나는 "d"가 리턴하는 객체가 반드시 NSDictionary 객체 일 필요는 없다는 것을 추측하고 있습니다. 대신 NSArray일까요? 이 같은

시도 뭔가 :

NSDictionary * dic = [NSJSONSerialization JSONObjectWithData:result options:kNilOptions error:nil]; 

// this gives the whole NSDictionary output: 
NSLog(@"Results %@", [dic description]); 

// get the dictionary that corresponds to the key "d" 
NSDictionary * dDic = [dic objectForKey: @"d"]; 
if(dDic) 
{ 
    NSString * nameObject = [dDic objectForKey: @"Name"]; 
    if(nameObject) 
    { 
     NSLog(@"object for key 'Name' is %@", nameObject); 
    } else { 
     NSLog(@"couldn't get object associated with key 'Name'"); 
    } 
} else { 
    NSLog(@"couldn't get object associated with key 'd'")); 
} 

그리고 그것은 당신이 어떤 수준에서 파악하고있는 당신의 가정이 파괴되는 객체 도움이되는지 확인합니다.

+0

+1하지만, 객체를 로깅 할 때'-description'을 직접 호출 할 이유는 거의 없습니다. 이것이 "% @"형식 지정자가 이미 수행 한 작업입니다. 그냥'NSLog (@ "Results % @", dic);'를해라. 그건 그렇고,'dic'은 사전이 아니라는 가능성이 있습니다.'[dic objectForKey : @ "d"]'가 아닌 것 같습니다. –

+0

예. 오래된 습관이 나에게 열심히 (NSArray 및 NSDictionary 객체의 "description"을 호출하는) 힘들어하지만, "% @'"NSLog 형식 지정자에 객체를 보내면 객체에 대한 설명이 인쇄됩니다. 여기서 아이디어는 Eray가 JSON 출력의 일부가 자신의 가정 (모든 것이 NSDictionary)과 일치하지 않는지 확인하는 것입니다. –

+0

프로그램이 NSString * nameObject = [dDic objectForKey : @ "Name"]; 오류가 발생했습니다 –

관련 문제