使用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
。String
变量分配String?
可以正常工作。它没有编译,我收到此错误:
'String' is not convertible to 'String?'
我认为String
可以转换为String?
。这里发生了什么?
版本:Swift 3.2 - ReactiveSwift 2.0.1
答案 0 :(得分:0)
你的例子中有很多缺失,所以我无法重现确切的问题。
您在...
中遗漏的代码可能要复杂得多,可能是多个被动操作的链,我的猜测是实际错误在该代码的某处完全不同。由于Swift编译器存在一些错误,您收到的错误消息只会产生误导。
你可以尝试将你的代码分解成更小的部分,看看编译器现在是否在另一个地方失败并尝试将其缩小。