我一直在尝试恢复在swift早期编写的字幕文本脚本,并使其在swift 1.2中运行。我已经能够修复除了一个之外的所有错误,这个错误存在于原始作者提供的代码的最后部分中(他声明他将不再更新项目(@ https://github.com/cbpowell/MarqueeLabel-Swift)。完整的编译器错误是,“无法使用类型'(Uint,values:inout [Float])'的参数列表调用'getControlPointAtIndex'。
func controlPoints() -> [CGPoint] {
// Create point array to point to
var point: [Float] = [0.0, 0.0]
var pointArray = [CGPoint]()
for (var i: UInt = 0; i <= 3; i++) {
self.getControlPointAtIndex(i, values: &point)
pointArray.append(CGPoint(x: CGFloat(point[0]), y: CGFloat(point[1])))
}
return pointArray
}
问题发生在'self.getControlPointAtIndex(i,values:&amp; point)这一行,我已经尝试了一切来修复它。完整的文件文件在上面的链接中提供。
答案 0 :(得分:1)
根据Apple的文档,方法getControlPointAtIndex:values:
期望其参数类型为Int
和UnsafeMutablePointer<Float>
。
因此,您应该将UInt
更改为Int
并为point
分配一个指针,如下所示:
func controlPoints() -> [CGPoint] {
// Create point array to point to
var point = UnsafeMutablePointer<Float>.alloc(2)
var pointArray = [CGPoint]()
for (var i: Int = 0; i <= 3; i++) {
self.getControlPointAtIndex(i, values: point)
pointArray.append(CGPoint(x: CGFloat(point[0]), y: CGFloat(point[1])))
}
point.dealloc(2)
return pointArray
}
答案 1 :(得分:0)
在Swift 2.1中,以下代码应按预期工作:
var controlPoint1: [Float] = [0,0]
function.getControlPointAtIndex(1, values: &controlPoint1)