为什么在将 Float 转换为 CGFloat 时 Xcode 给我警告 "Cannot convert value of type 'CGFloat' to expected argument type 'UnsafeMutablePointer"?

Why when converting Float to CGFloat Xcode give me a warning "Cannot convert value of type 'CGFloat' to expected argument type 'UnsafeMutablePointer"?

我正在尝试将 Float 值转换为 CGFloat 值,这里是我的代码:

    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)

但是 Xcode 突然给我一个警告说:"Cannot convert value of type 'CGFloat' to expected argument type 'UnsafeMutablePointer" 在 "tintColor" 行? 谁能帮帮我?

它们必须是可选的:

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)

编辑:正如 deoKaushal 所指出的,它们也不能是常量。

您需要将 CGFloat 对象更改为 var 而不是 let 并在 getRed 方法中传递红色值的指针对象。

更新代码

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)

您可以在使用单行代码声明 rgba 后优化您的代码。

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