我用这个方法调用getLineDash的UIBeizerPath :
path.getLineDash(pattern.map{CGFloat($0)}, ...)pattern是[Float] (我必须使用[Float] ,而不是[CGFloat] )下面的快速方法将[浮点]投射到[CGFloat]? 把它投给[CGFloat] ,但是它给了我
Cannot convert value of type '[CGFloat]' to expected argument type 'UnsafeMutablePointer<CGFloat>?'奇怪的是,表演
path.setLineDash(pattern.map{CGFloat($0)}, ...不会引发编译错误。
在这个问题之后,我添加as UnsafeMutablePointer<CGFloat>但它仍然给我错误。
I am calling getLineDash of a UIBeizerPath with this:
path.getLineDash(pattern.map{CGFloat($0)}, ...)Where pattern is a [Float] (And I must use [Float], not [CGFloat]) following Fast method to cast [Float] to [CGFloat]? to cast it to [CGFloat], but it is giving me
Cannot convert value of type '[CGFloat]' to expected argument type 'UnsafeMutablePointer<CGFloat>?'Weirdly, performing
path.setLineDash(pattern.map{CGFloat($0)}, ...Does not raise a compile error.
Following this question, I added as UnsafeMutablePointer<CGFloat> but it is still giving me the error.
最满意答案
我有点愚蠢。 我没有完全理解UnsafeMutablePointer 。
基本上它们都是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)I was a bit stupid. I didn't fully understand UnsafeMutablePointers.
basically they are inout parameters, so they need the ampersand (&) before the function call. also, as it is inout, I must pass a variable of [CGFloat] to it.
This code worked:
var pat = pattern.map{CGFloat($0)} var cou = count var phas = phase.map{CGFloat($0)} path.getLineDash(&pat, count: &cou, phase: &phas)更多推荐
发布评论