【发布时间】:2021-01-13 17:27:37
【问题描述】:
使用
self.backgroundColor = .init(named: "my-color")
其中self 是UIView,会触发此错误:
可选类型“UIColor?”的值必须解包为“UIColor”类型的值
使用 '??' 合并当可选值包含 'nil' 时提供默认值 [修复]
使用“!”强制展开如果可选值包含'nil'则中止执行[修复]
编译器知道backgroundColor 属性的类型是UIColor?,所以它应该为初始化器推断它,对吧?
此外,知道该属性是可选的,错误消息对我来说没有太大意义。
另外,两个自动修复都是“递归”的,这意味着它们不能修复错误,我可以一遍又一遍地应用它们。
注意:我知道我可以使用UIColor.init 或简单地使用UIColor。这只是一个简化的例子。
【问题讨论】:
-
您的代码似乎缺少一些上下文:您没有包含任何内容来向我们展示
self.backgroundColor的实际定义是什么。 -
您需要edit 您的问题以minimal reproducible example 的形式包含所有相关代码,以便使问题成为主题。
-
对我来说,从描述中可以清楚地看出 backgroundColor 的类型是
UIColor?。我自己运行了代码,可以验证与在这个问题中观察到的相同结果,我仍然认为这是一个有效且有趣的问题。似乎 swift 语义分析器试图推断类型的方式有些问题。 -
@DávidPásztor,对,但大家都清楚
self是UIView。但即使没有这个,它也无关紧要,因为我说过它是UIColor?类型的属性。
标签: swift syntax-error optional