'String'不能转换为'String?'

问题描述:

使用ReactiveSwift,我使用以下代码:'String'不能转换为'String?'

let alertMessageProperty = MutableProperty<String?>(nil) 
... 
.on(failed: { self.alertMessageProperty.value = $0.localizedDescription }) 
... 

这意味着:

  • self.alertMessageProperty.valueString?
  • .on(failed:)类型,failed((Error) -> Void)?类型,以便$0的类型为错误和$0.localizedDescription类型为String
  • 在一个简单的Playground中,将String分配给String?变量的工作正常,如预期的那样。

它不编译,我得到这个错误:

'String' is not convertible to 'String?' 

我觉得String是SO转换为String?。这里发生了什么?

版本:斯威夫特3.2 - ReactiveSwift 2.0.1

+0

一个是可选的,一个不是。 – LinusGeffarth

+0

可能重复的[错误:'字符串'不能转换为'字符串!'](https://*.com/questions/38186121/error-string-is-not-convertible-to-string) – alseether

+0

@alseether:有趣的,但在这个职位的答案不明确。这听起来像是一个Swift编译器错误,但它没有明确提及。 –

有很多在这个例子里缺,所以我不能重现确切的问题。

您在...中遗漏的代码可能要复杂得多,也许是一连串的被动操作,而且我的猜测是实际的错误在该代码的某处完全不同。由于Swift编译器存在一些错误,你得到的错误信息只是误导。

您可以尝试将代码分解为更小的代码,并查看编译器现在是否在不同的位置出现故障,并试图缩小它的范围。