Why, when converting Float to CGFloat Xcode, does the warning “Cannot convert a value of type“ CGFloat ”to the expected argument type“ UnsafeMutablePointer ”appear?

I am trying to convert a Float value to a CGFloat value, here is my code:

let myFloatForR = 0 let r = CGFloat(myFloatForR) let myFloatForG = 0 let g = CGFloat(myFloatForG) let myFloatForB = 0 let b = CGFloat(myFloatForB) let myFloatForA = 0 let a = CGFloat(myFloatForA) tintColor.getRed(r, green:&g, blue:&b, alpha:&a) 

but suddenly Xcode gives me a warning: “Can't convert a value of type“ CGFloat ”to the expected argument type“ UnsafeMutablePointer ”in the string“ tintColor ”? Can anyone help me?

+5
source share
2 answers

You need to change the CGFloat objects as var instead of let and pass a pointer object for the red value in the getRed method.

Updated Code

 let myFloatForR = 0 var r = CGFloat(myFloatForR) let myFloatForG = 0 var g = CGFloat(myFloatForG) let myFloatForB = 0 var b = CGFloat(myFloatForB) let myFloatForA = 0 var a = CGFloat(myFloatForA) tintColor.getRed(&r, green:&g, blue:&b, alpha:&a) 

OR

You can optimize your code after declaring r , g , b and a with a single line of code.

 var r: CGFloat = 0, g: CGFloat = 0, b: CGFloat = 0, a: CGFloat = 0 tintColor.getRed(&r, green:&g, blue:&b, alpha:&a) 
+7
source

They must be optional:

 let myFloatForR: Float = 0 var r: CGFloat? = CGFloat(myFloatForR) let myFloatForG: Float = 0 var g: CGFloat? = CGFloat(myFloatForG) let myFloatForB: Float = 0 var b: CGFloat? = CGFloat(myFloatForB) let myFloatForA: Float = 0 var a: CGFloat? = CGFloat(myFloatForA) tintColor.getRed(r, green:&g, blue:&b, alpha:&a) 

Edit: As de Causchal noted, they also cannot be constants.

0
source

Source: https://habr.com/ru/post/1234541/


All Articles