2011-09-28 6 views
2

내가 정확히이 일을하고 있다면 그냥 궁금, 그것은 구문 분석 JSON 아이폰 SDK

이 함수 내 키를 사용하여 구글 JSON 요청을 전달

사용 간단 뭔가 코드를 많이 ... 보인다 처리 ASIHTTPREQUEST

 NSString *url4Google = [[NSString alloc] initWithFormat:@"https://www.googleapis.com/shopping/search/v1/public/products?key=(MY SECRET KEY)&country=GB&q=5035822086234"]; 

     ASIHTTPRequest* request = [self requestWithURL:url4Google]; 

코드 ...

- (void)requestFinished:(ASIHTTPRequest*)request { 

NSLog(@"GOOGLE SHOPPER IMAGE LOADING"); 

NSDictionary *result = [[request responseString] objectFromJSONString]; 

//GOOGLE SHOPPER IMAGE RETURN.. 

NSArray *Image = [[[[result objectForKey:@"items"] valueForKey:@"product"] valueForKey:@"images"] valueForKey:@"link"] ; 

NSArray *Title = [[[result objectForKey:@"items"] valueForKey:@"product"] valueForKey:@"title"]; 

//NSLog(@"TITLE OF ITEM = %@", Title); 

int size = [Image count]; 
NSLog(@"there are %d product images for this barcode ", size); 

int titlez = [Title count]; 
NSLog(@"there are %d title names for this barcode ", titlez); 

NSArray *imagearray = [Image objectAtIndex:3]; 
NSString *titleofitemis = [Title objectAtIndex:2]; 

//Choosing a number objectAtIndex... 

NSMutableString * result1 = [[NSMutableString alloc] init]; 
for (NSObject * obj in imagearray) 
{ 
    [result1 appendString:[obj description]]; 
} 
NSLog(@"FULL IMAGE URL IS = %@", result1); 

//SET IMAGE 
NSURL* _url = [[NSURL alloc] initWithString:result1]; 
self.url = _url; 
[_url release]; 
[result1 release]; 

NSLog(@"url = %@", url); 

UIImage* image = [ImageManager loadImage:url]; 
if (image) { 
imageView.image = image; 
}  

//SET TITLE 
self.title = titleofitemis; 

NSLog(@"FULL TITLE NAME IS = %@", titleofitemis); 
} 

나는이 이미지를 위치한 후 이미지를로드 비동기하기 SBJSON 또한 ImageManager를 사용하고 있습니다 ..

내가 그이 예를 들어 너무 많은 문제가되지 않습니다 나에게로 메모리 관리의 비트를 수행 한 ...

NSLOG 출력

2011-09-28 16:29:17.351 IOSBoilerplate[17906:11c03] done pressed 
2011-09-28 16:29:18.031 IOSBoilerplate[17906:11c03] GOOGLE SHOPPER IMAGE LOADING 
2011-09-28 16:29:18.034 IOSBoilerplate[17906:11c03] there are 25 product images for this  barcode 
2011-09-28 16:29:18.035 IOSBoilerplate[17906:11c03] FULL URL FOR IMAGE = http://static.gam.co/media/films/00/000/0032/32467/image/30403.jpg 

이 &가 가지고있는 가장 빠른 방법입니다 이 작업이 올바르게 완료되었으므로 나중에 모든 오류 수준을 검사 할 수 있습니다 ..

도움이 될 것입니다.

답변

0

코드가 좋아 보인다. 일부 정리/스타일 제안 :

//... 
NSMutableString *urlString = [NSMutableString string]; // shorter, autoreleased 
for (NSString *s in imagearray) { // already typed 
    [urlString append:s]; 
} 
self.url = [NSURL urlWithString:urlString]; // that's all it takes 
UIImage *displayImage = [ImageManager loadImage:url]; 
// code is very readable, too 

같은 Image 또는 Title 당신 같은 대문자로 시작하는 인스턴스 이름을 사용은 삼가 해 주시기 바랍니다. 관례는 대문자로 된 이름이 인스턴스가 아닌 클래스에 사용된다는 것입니다. 또한 imageArray 또는 imageList과 같이 더 알기 쉬운 이름을 사용하면 코드를 훨씬 더 이해할 수 있습니다.

+0

시간 내 주셔서 대단히 감사 드리며 코드 Mundi를 살펴 보았습니다. 저는 1 년 반 동안 지금 iOS 개발자였으며 ​​항상 대문자를 사용했습니다. 이제 습관의 일부라고 생각합니다 !! – CMM