在预期返回的函数中缺少返回' UIFont?'

时间:2015-10-01 11:47:19

标签: ios swift2 uifont

我在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

我做错了什么?

1 个答案:

答案 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。