0

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

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

意思是:

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

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

'String' is not convertible to 'String?'

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

版本:Swift 3.2 - ReactiveSwift 2.0.1

4

1 回答 1

2

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

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

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

于 2017-12-01T09:20:32.440 回答