Swift 3 advertencia para envío async


Tengo este código:

DispatchQueue.global(priority: DispatchQueue.GlobalQueuePriority.default).async {
                let url = URL(string: itemImageURL )
                let data = try? Data(contentsOf: url!)
                if data != nil {
                    DispatchQueue.main.async{
                        cell.advImage!.image = UIImage(data: data!)
                    }
                }
            }

Recibo esta advertencia en Swift 3:

'default' fue obsoleto en iOS 8.0: Use atributos de qos en su lugar

En la primera línea.

Aún no hemos encontrado una solución. ¿Alguien lo ha hecho?

Author: Moritz, 2016-09-30

4 answers

Intenta qos: DispatchQoS.QoSClass.default en lugar de priority: DispatchQueue.GlobalQueuePriority.default

DispatchQueue.global(qos: DispatchQoS.QoSClass.default).async {
            let url = URL(string: itemImageURL )
            let data = try? Data(contentsOf: url!)
            if data != nil {
                DispatchQueue.main.async{
                    cell.advImage!.image = UIImage(data: data!)
                }
            }
        }
 63
Author: iPao,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-09-30 12:09:34

En lugar de usar parámetro de prioridad :

DispatchQueue.global(priority: DispatchQueue.GlobalQueuePriority.default).async {
 // ...
}

Uso qos parámetro que utiliza diferentes enum DispatchQoS.QoSClass.default pero usted también puede usar su valor de enumeración, como acaba de .default:

DispatchQueue.global(qos: .default).async {
 // ...
}

Swift 3 ha traído muchos cambios en GCD(Grand Central Dispatch).

 5
Author: Wilson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-10-13 10:22:47

Si está creando una propiedad utilizando el Framework de Despacho y actualizando la interfaz de usuario con alguna animación dentro de una función, podría verse algo como esto.

let queue = DispatchQueue.global(qos: DispatchQoS.QoSClass.default)
    // dispatch_after says that it will send this animation every nsec
    queue.asyncAfter(deadline: when) {
        DispatchQueue.main.async(execute: {
            self.animate(withDuration: 0.5, animations: {
                self.image.setWidth(35)
                self.image.setHeight(35)
            })
        })
    }
 1
Author: tymac,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-11-04 14:29:50

El siguiente código se prueba para Swift 3.0 en Xcode 8.2.1

DispatchQueue.global(qos: .background).async {
            let img2 = Downloader.downloadImageWithURL(imageURLs[1])

            // Background Thread
            DispatchQueue.main.async {

                // Run UI Updates
                self.imageView2.image = img2
            }
        }

Donde las propiedades de QoS son:

background, utility, `default`, userInitiated, userInteractive and unspecified

Consulte este documento de apple para más detalles.

 1
Author: Jayprakash Dubey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-03-17 05:41:36