'map'产生[T],而不是预期的上下文结果类型'UnsafeMutablePointer <cgfloat>'

时间:2017-04-15 12:31:17

标签: swift cgfloat unsafemutablepointer

我打电话给getLineDash的{​​{1}}:

UIBeizerPath

path.getLineDash(pattern.map{CGFloat($0)}, ...) pattern {我必须使用[Float],而不是[Float]Fast method to cast [Float] to [CGFloat]?之后将[CGFloat]投放到[CGFloat],但它正在给我

Cannot convert value of type '[CGFloat]' to expected argument type 'UnsafeMutablePointer<CGFloat>?'

很奇怪,表演

path.setLineDash(pattern.map{CGFloat($0)}, ...

不会引发编译错误。

this次问题之后,我添加了as UnsafeMutablePointer<CGFloat>,但它仍然给我错误。

1 个答案:

答案 0 :(得分:2)

我有点傻。我没有完全理解UnsafeMutablePointer s。

基本上它们是inout个参数,因此在函数调用之前它们需要&符号(&)。而且,因为它是inout,我必须将[CGFloat]的变量传递给它。

此代码有效:

var pat = pattern.map{CGFloat($0)}
var cou = count
var phas = phase.map{CGFloat($0)}
path.getLineDash(&pat, count: &cou, phase: &phas)