预期 return 'UIFont?' 的函数中缺少 return

Missing return in a function expected to return 'UIFont?'

我在 swift 中有一个名为 COSTextField 的自定义 UITextfield。有点像

class COSTextField: UITextField {
    func customFont() -> UIFont? {
        if let font = self.font {
            return UIFont(name: kCOSFontRegular, size: font.pointSize)
        }
    }
}

我正在尝试扩展此 COSTextField class 并覆盖 customFont 方法。我的新 class 看起来像

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?'。如果我在覆盖函数的末尾添加一个 return nil 语句,我会得到一个错误 Non-void function should return a value

我做错了什么?

if let分支之后添加return nil

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 条件失败,您的函数将 return nil。