简体   繁体   English

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

[英]Missing return in a function expected to return 'UIFont?'

I have a custom UITextfield in swift called COSTextField. 我在swift中有一个名为COSTextField的自定义UITextfield。 It is something like 它就像是

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

I am trying to extend this COSTextField class and override the customFont method. 我试图扩展此COSTextField类并覆盖customFont方法。 My new class looks like 我的新课看起来像

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

When I try to compile this, I get an error Missing return in a function expected to return 'UIFont?' 当我尝试编译它时,我得到一个错误Missing return in a function expected to return 'UIFont?' . If I add a return nil statement at the end of my override function, I get an error Non-void function should return a value 如果我在覆盖函数的末尾添加一个返回nil语句,我得到一个错误Non-void function should return a value

What am I doing wrong? 我究竟做错了什么?

Add return nil just after the if let branch: 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
    }
}

That way, if the if let condition fails, your function will return nil. 这样,如果if let条件失败,你的函数将返回nil。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM