调用存储在数组中的函数会在Swift中产生“意外的尾随闭包”

时间:2015-09-08 17:11:43

标签: swift closures

我正在使用Swift 1.2 我有一个数组,我存储我的函数/闭包。

阵列声明:

var pillFunctions: [(String, position: CGPoint) -> Void]

功能声明:

private func setPill1(number: String, position: CGPoint) -> Void {
    pillLabel1.text = number
    pill1.frame.origin = position
}

在数组中存储函数(我的类扩展了UIView):

required init(coder: NSCoder) {
    super.init(coder: coder)
    pillFunctions = [
            setPill1, setPill2, setPill3, setPill4, setPill5
    ]
}

致电:

pillFunctions[1]("213", position: CGPointMake(1.0, 2.0))

我是Swift的新手,但我希望这会奏效。 我在这里缺少什么?

由于 克里斯蒂安

1 个答案:

答案 0 :(得分:1)

我犯了几个错误。

首先,我必须初始化数组:

var pillFunctions: [(String, position: CGPoint) -> Void] = []

我班级的初始化功能不正确:

required init(coder: NSCoder) {
    super.init(coder: coder)

    self.pillFunctions = [ self.setPill1, self.setPill2, self.setPill3, self.setPill4, self.setPill5 ]
}

经过这两次更改后,它开始起作用。

我不确定这是最好的方法,只是因为“它有效”,并不意味着它很好。