2011-09-28 38 views
2

只是想知道如果我正确地做这个,这似乎是这么简单的东西有很多代码...JSON解析为GOOGLE API返回图片iPhone 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 

请使用开始以大写字母实例名称,如您ImageTitle避免。惯例是大写的名字用于类,而不是实例。此外,更多描述性名称(如imageArrayimageList)使代码更易于理解。

+0

非常感谢您的时间和我的代码Mundi,我已经是一个一年半的ios开发人员,我一直使用大写字母,我认为它现在只是习惯的一部分! – CMM