2013-04-09 60 views
4

我正在開發一個iPhone應用程序,我需要在for循環中使用圖片url從服務器下載100-200張圖片。如下:如何在單個XML調用中下載多個圖像?

NSOperationQueue *queue = [NSOperationQueue new]; 
     NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget:self 
                       selector:@selector(downloadImages:) 
                        object:arrayTemp]; 
     [queue addOperation:operation]; 
     [operation release]; 
     [queue release]; 

-(void)downloadImages{ 

NSAutoreleasePool *pool = [[NSAutoreleasePool alloc]init]; 
UIImage *image; 
for (int i=0; i < [self.ImagesRecords count]; i++) 
{ 
    ImageData *data =(ImageData*) [self.ImagesRecords objectAtIndex:i]; 
    NSString *strName = [NSString stringWithFormat:@"image_%@",data.ID]; 
    image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:[@"http://abc.com" stringByAppendingString:data.PhotoPath]]]]; 
    if (image!=nil) 
    { 
     [self saveImage:image withName:strName]; 
    } 
} 
image = nil; 
[pool release]; 
} 

它的工作正常,並給我形象以及。

我的問題是:

  1. 我怎麼能在一個單一的XML調用將獲取多個圖像數據?可能嗎?
  2. 什麼是下載圖像的方式?請提供一段代碼。
  3. 有些時候,我發現我的應用卡住了一段時間,當這個圖像下載正在進行。這是什麼原因?

回答

0
  1. 多個圖像例如在1個XML:
<xml> 
    <info> 
     <width>55</width> 
     <height>41</height> 
    </info> 
    <image_data> 
     <data> 
      <name>Background</name> 
      <data>data:image/png;base64,iVBORw0KGgoAAA...</data> 
     </data> 
     <data> 
      <name>Layer #2</name> 
      <data>data:image/png;base64,iVBORw0KGgoAAAANS...</data> 
     </data> 
     <data> 
      <name>Layer #3</name> 
      <data>data:image/png;base64,iVBORw0KGgoAAAANSUh...</data> 
     </data> 
    </image_data> 
</xml> 
+0

您可以將XML精 - 它需要內部的代碼標籤,嵌套在列表裏面時,這是一個有點奇怪。 – Flexo 2013-08-14 20:36:01