2015-09-22 24 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

工作非常出色!需要標記爲接受的答案。 –