2015-09-22 23 views
2

我有一个从JSON API响应中解析出的对象。该对象有一个指向缩略图的链接。我有一个数组需要下载缩略图的多个对象。所以我有一个循环开始启动每个缩略图链接的异步调用。iOS确定完成多个异步调用

所以我有一个ViewController中的这个对象,我开始下载所有图像,我怎么能检测到所有的调用完成?

这是我的代码:

public class NewsListItem: NSObject { 
    public var entries: [NewsListEntry]? = [] 

    public func downloadThumbnails() { 
     for itm in entries! { 
      if(itm.thumbnail != "") { 
       itm.downloadThumbnail() 
      } 
     } 
    } 
} 


public class NewsListEntry: NSObject { 
    public var thumbnail: String = "" 
    public var thumbnailImage: UIImage = UIImage() 


    public func downloadThumbnail() { 
      GetImageHandeler().getImage(self.thumbnail, completionHandler: { (responseObject, error) in 
        self.thumbnailImage = responseObject! 
      }) 
    } 
} 
+0

建议您使用https://github.com/BoltsFramework/Bolts-iOS –

回答

2

您可以使用dispatch_groups这一点。在OBJ C中,它看起来就像是这样的:

dispatch_group_t serviceGroup = dispatch_group_create(); 

for (itm in entries){ 
    dispatch_group_enter(serviceGroup); 
    [ImageHandler getImage:^(ConfigResponse *results, NSError* error){ 
    // Do something with the error or results 
    dispatch_group_leave(serviceGroup); 
    }]; 
} 

dispatch_group_notify(serviceGroup,dispatch_get_main_queue(),^{ 
    // Do your stuff, everything has finished 
}); 

你可以找到一个更详细的例子here

+0

工作非常出色!需要标记为接受的答案。 –