为什么在将Float转换为CGFloat Xcode时会给我一个警告"无法转换类型' CGFloat'预期的参数类型' UnsafeMutablePointer"?

时间:2015-10-26 17:11:16

标签: iphone swift swift2 xcode7 uicolor

我正在尝试将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给了我一个警告说:"无法转换类型' CGFloat'预期参数类型' UnsafeMutablePointer"在" tintColor"线? 有人可以帮帮我吗?

2 个答案:

答案 0 :(得分:8)

您需要将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)   

答案 1 :(得分:0)

他们需要是可选的:

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指出的那样,它们也不能成为常数。