Nella mia app ho una funzione che crea una NSRURLSession e invia una NSURLRequest utilizzando
sesh.dataTaskWithRequest(req, completionHandler: {(data, response, error)
Nel blocco di completamento per questa attività, devo eseguire alcuni calcoli che aggiungono un UIImage al viewcontroller chiamante. Ho una funzione chiamata
func displayQRCode(receiveAddr, withAmountInBTC:amountBTC)
che esegue il calcolo dell'aggiunta di UIImage. Se provo a eseguire il codice di aggiunta della vista all'interno del blocco di completamento, Xcode genera un errore che dice che non posso usare il motore di layout durante un processo in background. Quindi ho trovato del codice su SO che tenta di mettere in coda un metodo sul thread principale:
let time = dispatch_time(DISPATCH_TIME_NOW, Int64(0.0 * Double(NSEC_PER_MSEC)))
dispatch_after(time, dispatch_get_main_queue(), {
let returned = UIApplication.sharedApplication().sendAction("displayQRCode:", to: self.delegate, from: self, forEvent: nil)
})
Tuttavia, non so come aggiungere i parametri "receiveAddr" e "amountBTC" a questa chiamata di funzione. Come farei questo o qualcuno può suggerire un modo ottimale per aggiungere una chiamata di metodo alla coda principale dell'applicazione?