2016-06-12 7 views
0

Ich habe eine Liste von Objekten. Jedes der Objekte enthält einen optionalen Bildwert, der heruntergeladen werden muss. Ich möchte die Liste zurückgeben, nachdem alle Bilder initialisiert wurden (falls vorhanden). Hat es etwas mit NSOPerationQueues zu tun?Verfolgen Sie alle laufenden Blöcke

func getFullList(list:[AnyObject], completion:(result: [AnyObject]) -> Void { 
    for item in list { 
     downloadImage(item.url), completion: {(image) in 
     item.image = image 
    )} 
    // I know this does not work here 
    completion(result: list) 
} 

Antwort

1

Nicht getesteter Code.

func getFullList(list:[AnyObject], completion:(result: [AnyObject]) -> Void { 
    let group = dispatch_group_create() 

    for item in list { 
     dispatch_group_enter(group) 

     downloadImage(item.url), completion: {(image) in 
      item.image = image 

      dispatch_group_leave(group) 
     } 
    )} 

    dispatch_group_notify(group, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)) { 
     completion(result: list) 
    } 
} 
Verwandte Themen