'字符串'不能转换为' String?'

时间:2017-10-19 12:25:34

标签: swift optional reactive-swift

使用ReactiveSwift,我使用了以下代码:

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

表示:

  • self.alertMessageProperty.value的类型为String?
  • .on(failed:)
  • failed的类型为((Error) -> Void)?,因此$0的类型为错误,$0.localizedDescription的类型为String
  • 在一个简单的Playground中,为String变量分配String?可以正常工作。

它没有编译,我收到此错误:

'String' is not convertible to 'String?'

我认为String可以转换为String?。这里发生了什么?

版本:Swift 3.2 - ReactiveSwift 2.0.1

1 个答案:

答案 0 :(得分:0)

你的例子中有很多缺失,所以我无法重现确切的问题。

您在...中遗漏的代码可能要复杂得多,可能是多个被动操作的链,我的猜测是实际错误在该代码的某处完全不同。由于Swift编译器存在一些错误,您收到的错误消息只会产生误导。

你可以尝试将你的代码分解成更小的部分,看看编译器现在是否在另一个地方失败并尝试将其缩小。