我想将块转换为闭包,但是我不知道怎么做。我不知道出什么问题了。
objective-C :
// monthBlock type
typedef NSString *(^JTCalendarMonthBlock)(NSDate *date, JTCalendar *jt_calendar);
// Block
self.calendar.calendarAppearance.monthBlock = ^NSString *(NSDate *date, JTCalendar *jt_calendar){
return @"";
};
swift :
// Swift closure
self.calendar.calendarAppearance.monthBlock = {(date:NSDate, jt_calendar:JTCalendar) -> NSString in
return "" as NSString
}
产生错误:
最佳答案
您的参数类型不太匹配。您可以执行以下任一操作:
self.calendar.calendarAppearance.monthBlock = { (date: NSDate!, jt_calendar: JTCalendar!) -> String! in
return ""
}
或者,更简单地说:
calendar.calendarAppearance.monthBlock = { date, jt_calendar in
return ""
}
我假设
JTCalendar
不是您自己的类(class)。如果是这样,则可以考虑对其进行审核,添加nullability annotations以使其明确表明这些参数是否可以是nil
。在没有这些注释的情况下,Swift无法知道它们是否为nullable
,因此它将这些参数解释为隐式未包装的可选参数。