我正在编写的代码片段在迁移到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
,它是两个函数的第二行。
请解释一下我错过了什么。
答案 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)