2011-12-21 3 views
0

다음 URL (http://jamesstenson.com/portraits/?json=1)의 JSON 데이터에 액세스하는 데 문제가있는 경우 기본적으로 "첨부 파일"아래의 "전체" "url"에 액세스하려고합니다.NSJSONSerialization에서 생성 된 NSDictionary 내에서 JSON 데이터에 액세스

2011-12-21 10:13:39.362 JSON[3463:f803] -[__NSCFString objectForKey:]: unrecognized selector sent to instance 0x6a7b500 

2011-12-21 10 : 13 :

NSError *e = nil; 
NSData *jsonFeed = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://jamesstenson.com/portraits/?json=1"]]; 
NSDictionary *jsonData = [NSJSONSerialization JSONObjectWithData:jsonFeed options:NSJSONReadingMutableContainers error: &e]; 

if (!jsonData) { 
    NSLog(@"Error parsing JSON: %@", e); 
} else { 

    for(NSDictionary *item in [jsonData objectForKey:@"page"]) { 
     for(NSDictionary *attachment in [item objectForKey:@"images"]) { 
      NSLog(@"%@", attachment); 
     } 
    } 
} 

이 오류 던지고 유지 : 다음과 같이 순간에 내 코드는 39.363 JSON을 [3463 : F803] * 종단 'NSCFString objectForKey :] : 인스턴스로 전송 된 인식 할 수없는 선택기 0x6a7b500'

내가 잘못 항목에 액세스하고 있지만이를 달성하는 방법을 알 수 없습니다. 나는 http://blogs.captechconsulting.com/blog/nathan-jones/getting-started-json-ios5과 같은 몇 가지 솔루션을 시도했지만 행운은 없다. 나는 iOS 개발에 대한 완전한 초보자이며 JSON에 대한 약간의 지식이있다. 도움을 주신 모든 분들께 미리 감사드립니다.

+0

당신의 JSON 응답 (파싱되기 전에)이 정확하게'page'와'images'라는 이름의 두 항목을 포함하고 있습니까? – Malloc

+0

오류가 어디에서 발생했는지 정확히 알려야합니다. JSON으로 특정 오류가 발생하는 것은 이해가되지 않습니다. 하지만 기본적인 문제는 "첨부 파일"배열을 추출하지 않는다는 것입니다. –

+0

@Hot Licks 오류는 [__NSCFString objectForKey :] : unrecognized selector라고 표시되어 있으므로이 줄에 ([jsonData objectForKey : @ "page"]의 NSDictionary * 항목에 대한) 오류가 있습니다. 내 대답에서 잘못 나온 것을 알려주십시오. – Nakkeeran

답변

3

문제는 당신이 항목에있는 NSDictionary을받지 않습니다, 그것은 당신에게 방법을 알고

확인이 링크 for each loop in objective c for accessing NSMutable dictionary를있는 NSString 될 사전의 키를 반환합니다 루프

for(NSDictionary *item in [jsonData objectForKey:@"page"]) 

당신에 NSDictionay

을 통과 할 수 아래

귀하의 요구 사항에 대한 수정 된 코드는, 당신에게

if (!jsonData) { 
     NSLog(@"Error parsing JSON: %@", e); } else { 
     NSArray *attachments = [[jsonData objectForKey:@"page"] objectForKey:@"attachments"]; 
     for(NSDictionary *object in attachments) { 
       NSLog(@"%@", [object objectForKey:@"images"]); 
       NSLog(@"%@", [[[object objectForKey:@"images"] objectForKey:@"full"] objectForKey:@"url"]); 
     } 
} 
도움이 될 수도있다
+0

@Hot Licks 내 답변에 투표하는 이유가 무엇인지 알려주겠습니다. 내가 스스로 해결할 수 있도록 알려 주실 수 있습니까? – Nakkeeran

+0

안녕하세요, 이것은 꽤 굉장합니다! 너무 가까이! 그러면 전체 크기의 URL에 어떻게 액세스 할 수 있습니까? NSLog 함수에서 내뱉는 법을 보여줄 수 있다면 매우 행복 할 것이고 답은 녹색 틱으로 표시 할 것입니다! : D – Nagra

+0

NSLog (@ "% @", [[objectObjectKey : @ "이미지"] objectForKey : @ "전체"] objectForKey : @ "url"]); – Nakkeeran

관련 문제