'String'不可转换为'String?'



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

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

这意味着:

  • self.alertMessageProperty.value属于String?类型
  • .on(failed:)中,failed 的类型是 ((Error) -> Void)? 所以$0是错误类型,$0.localizedDescriptionString 类型。
  • 在一个简单的 Playground 中,将String分配给 String? 变量可以正常工作,正如预期的那样。

它无法编译,我收到此错误:

'String' is not convertible to 'String?'

我认为String可以转换为String?.这是怎么回事?

版本: Swift 3.2 - ReactiveSwift 2.0.1

您的示例中缺少很多内容,因此我无法重现确切的问题。

您在...中遗漏的代码可能要复杂得多,可能是多个反应式操作的链,我的猜测是实际错误在该代码中的某个地方完全不同。您收到的错误消息只是由于 Swift 编译器的一些错误而具有误导性。

您可以尝试将

代码分解为更小的部分,看看编译器现在是否在不同的地方失败,并尝试以这种方式缩小范围。

相关内容

  • 没有找到相关文章

最新更新