J'ai lu que pour passer une variable / constante rapide à un argument qui s'attend à ce que UnsafePointer puisse être fait en utilisant le symbole 'inout' (esperluette) préfixant la variable / constante. Donc, dans le code suivant, je veux passer le tableau 'colors' en tant que "UnsafePointer 'à la fonction CGGradientCreateWithColorComponents (), mais j'obtiens une erreur du compilateur:

"& utilisé avec un argument non-inout de type UnsafePointer"

Voir l'image ci-dessous pour le visuel.

Donc, la question est, comment puis-je convertir les «couleurs» du tableau rapide en un UnsafePointer?

Merci

enter image description here

3
malena 26 déc. 2015 à 22:58

2 réponses

Meilleure réponse

Modifiez votre type de couleurs pour qu'il soit explicitement [CGFloat]:

var colors : [CGFloat] = [0.0, 0.0, 1.0, 1.0, 0.0, 1.0, 0.0, 1.0]

Pas besoin de traiter avec & ou quoi que ce soit. Mais vous devez en fait passer un tableau de CGFloat.

Et ne passez pas NULL mais nil:

let gradient = CGGradientCreateWithColorComponents(baseSpace, colors, nil, 2)
2
luk2302 26 déc. 2015 à 20:17

Swift 3

struct GradientPoint {
  var location: CGFloat
  var color: UIColor
}

gradientPoints.flatMap { $0.color.cgColor.components }.flatMap { $0 }
0
Den Jo 1 juil. 2017 à 23:11