'UIFont' is not convertible to 'UIFont?' 'UIFont' is not convertible to 'UIFont?' swift swift

'UIFont' is not convertible to 'UIFont?'


Elsewhere on SO, someone suggest that where you have this:

aTitleView.font = UIFont(name: "Roboto-Regular", size: 15)

...you should try writing this:

aTitleView.font = UIFont.init(name: "Roboto-Regular", size: 15)

I can take no credit for this (because I can't reproduce the bug) so I'm just guessing! But it would be very interesting to know if it actually works.


I had this problem as well. What fixed it for me was to turn off Whole Module Optimization.

Bulid Settings > Swift Compiler - Code Generation > Optimization Level

I had set it to Fastest (Whole Module Optimization). When I set it to None I didn't have this problem anymore. For context, this is a mixed code base with both Objective-C and Swift.


I had the same issue and doing this allows me to compile again:

let descriptor = UIFontDescriptor(name: "OpenSans-Semibold", size: 10.0)label.font = UIFont(descriptor: descriptor, size: 10.0)

So, use the UIFontDescriptor ...

Also doing this works for me:

if let font = UIFont(name: "OpenSans-Semibold", size: 10) {    label.font = font}