无法调用非函数类型DateCallBack的值

时间:2016-11-03 09:00:21

标签: ios swift3 xcode8

我正在编写的代码片段在迁移到swift 3之前曾经使用过魅力。但是,世界末日,我正在将它迁移到XCode 8,我似乎无法在我的代码中解决这个问题。这个问题不是我的理解。我想我已经错过了这里的基础知识。 DateCallBack是我在宣布上课之前定义的一种类型。

typealias DateCallBack = ((_ year: Int?, _ month: Int?) -> Void)

然后我宣布了一个DateCallBack实例。

private var callBack: DateCallBack!

然后在课程的扩展中,我实现了两个方法

 func cancelButtonAction() {
    self.callBack(year: nil, month: nil)
    self.animateOut { (completion) in
        if completion {
            self.removeFromSuperview()
        }
    }
}

func doneButtonAction(_ yearIndex: Int!, monthIndex: Int!) {
    self.callBack(year: yearIndex, month: monthIndex)
    self.animateOut { (completion) in
        if completion {
            self.removeFromSuperview()
        }
    }
}

我得到的错误是两个函数self.callBack上的Cannot call a value of non-function type DateCallBack,它是两个函数的第二行。 请解释一下我错过了什么。

2 个答案:

答案 0 :(得分:1)

您定义的函数定义为(_ year: Int?, _ month: Int?) -> Void,因此在调用时没有参数名称(因为每个参数前面都有_)。

所以你这样称呼它:

self.callBack(yearIndex, monthIndex) 

如果您希望函数调用看起来像在代码中

self.callBack(year: yearIndex, month: monthIndex)

你应该定义如下的函数:

(year: Int?, month: Int?) -> Void

答案 1 :(得分:0)

这解决了我的问题,谢谢@ bogdanf

self.callBack(yearIndex, monthIndex)