无法在Swift项目中调用'getControlPointAtIndex'

时间:2015-04-19 13:40:46

标签: ios xcode swift xcode6

我一直在尝试恢复在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)这一行,我已经尝试了一切来修复它。完整的文件文件在上面的链接中提供。

2 个答案:

答案 0 :(得分:1)

根据Apple的文档,方法getControlPointAtIndex:values:期望其参数类型为IntUnsafeMutablePointer<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)