'map' 生成 [T],而不是预期的上下文结果类型 'UnsafeMutablePointer<CGFloat>'
'map' produces [T], not the expected contextual result type 'UnsafeMutablePointer<CGFloat>'
我打电话给 UIBeizerPath
的 getLineDash
是这样的:
path.getLineDash(pattern.map{CGFloat([=13=])}, ...)
其中 pattern
是一个 [Float]
(而且我必须使用 [Float]
,而不是 [CGFloat]
)跟随 将其转换为 [CGFloat]
, 但它给了我
Cannot convert value of type '[CGFloat]' to expected argument type 'UnsafeMutablePointer<CGFloat>?'
奇怪,表演
path.setLineDash(pattern.map{CGFloat([=15=])}, ...
不会引发编译错误。
在 问题之后,我添加了 as UnsafeMutablePointer<CGFloat>
但它仍然给我错误。
我有点傻。我没有完全理解 UnsafeMutablePointer
s.
基本上它们是 inout
参数,所以在函数调用之前它们需要符号 (&
)。另外,因为它是 inout,所以我必须将 [CGFloat]
的变量传递给它。
此代码有效:
var pat = pattern.map{CGFloat([=10=])}
var cou = count
var phas = phase.map{CGFloat([=10=])}
path.getLineDash(&pat, count: &cou, phase: &phas)
我打电话给 UIBeizerPath
的 getLineDash
是这样的:
path.getLineDash(pattern.map{CGFloat([=13=])}, ...)
其中 pattern
是一个 [Float]
(而且我必须使用 [Float]
,而不是 [CGFloat]
)跟随 [CGFloat]
, 但它给了我
Cannot convert value of type '[CGFloat]' to expected argument type 'UnsafeMutablePointer<CGFloat>?'
奇怪,表演
path.setLineDash(pattern.map{CGFloat([=15=])}, ...
不会引发编译错误。
在 as UnsafeMutablePointer<CGFloat>
但它仍然给我错误。
我有点傻。我没有完全理解 UnsafeMutablePointer
s.
基本上它们是 inout
参数,所以在函数调用之前它们需要符号 (&
)。另外,因为它是 inout,所以我必须将 [CGFloat]
的变量传递给它。
此代码有效:
var pat = pattern.map{CGFloat([=10=])}
var cou = count
var phas = phase.map{CGFloat([=10=])}
path.getLineDash(&pat, count: &cou, phase: &phas)