为什么字体是可选的?

Dav*_*eek 7 uifont ios swift

我创建了一个结构,让我的字体可以全局预先缓存:

struct Fonts {
    static let avenirRegular = UIFont(name: "AvenirNextCondensed-Regular", size: 14.0)
}
Run Code Online (Sandbox Code Playgroud)

用法...:

xy.font = Fonts.avenirRegular
Run Code Online (Sandbox Code Playgroud)

它告诉我,我的常数是一个可选项.

可选类型'UIFont?'的值 没有打开; 你的意思是用'!' 要么 '?'?

为什么它是可选的?是否有可能AvenirNextCondensed-Regular在每个iOS设备上都没有?非常感谢帮助.

Mil*_*iuM 5

这里的"可选"意味着问题是字体可能不存在(即使我们知道它确实存在)并且您必须识别它,通过使其可选,您告诉编译器我知道字体不是您的库的一部分但我相信它在那里.

  • 如果存在具有该名称的字体,它仍将返回`UIFont?`,因为初始化器OP正在使用return可选的`UIFont`对象. (2认同)

Nir*_*v D 3

您使用的初始值设定项UIFont是返回可选UIFont?对象,即您收到包装可选建议的原因。

init?(name fontName: String, size fontSize: CGFloat)
Run Code Online (Sandbox Code Playgroud)

查看Apple 文档UIFont了解更多详细信息。