使用 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
您的示例中缺少很多内容,因此我无法重现确切的问题。
您在...
中遗漏的代码可能要复杂得多,可能是多个反应式操作的链,我的猜测是实际错误在该代码中的某个地方完全不同。您收到的错误消息只是由于 Swift 编译器的一些错误而具有误导性。
代码分解为更小的部分,看看编译器现在是否在不同的地方失败,并尝试以这种方式缩小范围。