为什么我得到的是 "Value of optional type UIFont not unwrapped",但展开后得到的是 "unexpectedly found nil while unwrapping an optional"?

Why am I getting a "Value of optional type UIFont not unwrapped", but unwrapping gives "unexpectedly found nil while unwrapping an optional"?

func initializePickerViewProperties() {
    let font = UIFont (name: "SanFranciscoDisplay-Regular", size: 30.0)
    let highlightedFont = UIFont (name: "SanFranciscoDisplay-Bold", size: 35.0)
    pickerView.font = font!
    pickerView.highlightedFont = highlightedFont!
}

很简单,有问题的 pickerView 是一个 AKPickerView

如果我删除强制解包,我会收到编译器错误。 "Value of optional type UIFont not unwrapped, did you mean to use "!" 或 "?"?"

但是,当我强制解包时,出现运行时错误。 "fatal error: unexpectedly found nil while unwrapping an Optional value"

表示你的字体没有正确初始化,给出nil。你应该安全地打开它们:

func initializePickerViewProperties() {
    if let font = UIFont (name: "SanFranciscoDisplay-Regular", size: 30.0),
        let highlightedFont = UIFont (name: "SanFranciscoDisplay-Bold", size: 35.0) {
        pickerView.font = font
        pickerView.highlightedFont = highlightedFont
    }
}

尝试打印所有可用字体,并检查字体名称的拼写

 for fontfamily in UIFont.familyNames{
        for fontname in UIFont.fontNames(forFamilyName: fontfamily){
            print(fontname)
        }
    }

您必须先在 Info.plist.

中添加 自定义字体

要查找 Info.plist 文件:

  1. 确保您已将自定义字体导入到您的项目中。
  2. 单击项目导航器最顶部的蓝色图标——项目本身。
  3. 转到信息 选项卡。
  4. 查找应用程序提供的字体
  5. 然后,单击 加号图标 将新的键值对添加到我们的 Info.plist。
  6. 添加您导入的字体的确切文件名,包括文件扩展名

我用这个解决了我的问题。希望它也对你有用。