“UIFont”不能转换成“UIFont”?

所以我今天晚上把我的XCode更新到了7.3。

在我的其中一个项目中,我在设置字体的几个标签上出现以下错误:

'(name: String, size: CGFloat) -> UIFont' is not convertible to '(name: String, size: CGFloat) -> UIFont?' 

编辑:这是我在导航栏中的标题视图的代码:

 let aTitleFrame: CGRect = CGRectMake(0, aHeaderTitleSubtitleView.frame.midY / 2, 200, 24) let aTitleView: UILabel = UILabel(frame: aTitleFrame) aTitleView.backgroundColor = UIColor.clearColor() aTitleView.font = UIFont(name: "Roboto-Regular", size: 15) // ERROR POPS UP HERE aTitleView.textAlignment = NSTextAlignment.Center aTitleView.textColor = UIColor.whiteColor() 

这是我的一个UILabel的Attributed String的代码:

 let aAttributedFundLabel: NSMutableAttributedString = NSMutableAttributedString(string: "Raising\n$ \(fund)") aAttributedFundLabel.addAttribute(NSForegroundColorAttributeName, value: UIColor.darkGrayColor(), range: NSRange(location: 0, length: 7)) aAttributedFundLabel.addAttribute(NSFontAttributeName, value: UIFont(name: "Roboto-Regular", size: 15)!, range: NSRange(location: 0, length: 7)) // ERROR POPS UP HERE aAttributedFundLabel.addAttribute(NSForegroundColorAttributeName, value: UIColor.blackColor(), range: NSRange(location: 8, length: fund.characters.count + 2)) aAttributedFundLabel.addAttribute(NSFontAttributeName, value: UIFont(name: "Roboto-Regular", size: 16)!, range: NSRange(location: 8, length: fund.characters.count + 2)) // ERROR POPS UP HERE startupFund.attributedText = aAttributedFundLabel 

这只发生在我整个项目中的两个文件中。

我打开了另一个项目,但是我能够无误地构build和运行它,即使我也在那里设置了多个标签的字体。

任何想法为什么发生这种情况?

TIA!

在其他地方,有人build议,你有这样的地方:

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

…你应该尝试写这个:

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

我可以不记得这个(因为我不能重现错误 ),所以我只是猜测! 但是知道它是否真正起作用是非常有趣的。

我也有这个问题。 对我来说固定的是closures整个模块优化。

Bulid设置> Swift编译器 – 代码生成>优化级别

我已经把它设置为最快(整体模块优化)。 当我把它设置为None时,我再也没有这个问题了。 对于上下文来说,这是一个与Objective-C和Swift混合的代码库。

我有同样的问题,这样做可以让我再次编译:

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

所以,使用UIFontDescriptor …

也这样做对我有用:

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