我在swift中有一个名为COSTextField的自定义UITextfield。它就像
class COSTextField: UITextField {
func customFont() -> UIFont? {
if let font = self.font {
return UIFont(name: kCOSFontRegular, size: font.pointSize)
}
}
}
我正在尝试扩展此COSTextField类并覆盖customFont方法。我的新班看起来像
class COSTextFieldLight: COSTextField {
override func customFont() -> UIFont? {
if let font = self.font {
return UIFont(name: kCOSFontLight, size: font.pointSize)
}
}
}
当我尝试编译时,我收到错误Missing return in a function expected to return 'UIFont?'
。如果我在覆盖函数的末尾添加一个返回nil语句,则会出现错误Non-void function should return a value
我做错了什么?
答案 0 :(得分:3)
在 return nil
分支之后添加if let
:
class COSTextField: UITextField {
func customFont() -> UIFont? {
if let font = self.font {
return UIFont(name: kCOSFontRegular, size: font.pointSize)
}
return nil
}
}
class COSTextFieldLight: COSTextField {
override func customFont() -> UIFont? {
if let font = self.font {
return UIFont(name: kCOSFontLight, size: font.pointSize)
}
return nil
}
}
这样,如果if let
条件失败,您的函数将返回nil。