我正在尝试将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"线? 有人可以帮帮我吗?
答案 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)
或强>
您可以在使用单行代码声明r
,g
,b
和a
后优化代码。
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指出的那样,它们也不能成为常数。