2017-10-19 147 views
0

使用ReactiveSwift,我使用以下代碼:'String'不能轉換爲'String?'

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

這意味着:

  • self.alertMessageProperty.valueString?
  • .on(failed:)類型,failed((Error) -> Void)?類型,以便$0的類型爲錯誤和$0.localizedDescription類型爲String
  • 在一個簡單的Playground中,將String分配給String?變量的工作正常,如預期的那樣。

它不編譯,我得到這個錯誤:

'String' is not convertible to 'String?' 

我覺得String是SO轉換爲String?。這裏發生了什麼?

版本:斯威夫特3.2 - ReactiveSwift 2.0.1

+0

一個是可選的,一個不是。 – LinusGeffarth

+0

可能重複的[錯誤:'字符串'不能轉換爲'字符串!'](https://stackoverflow.com/questions/38186121/error-string-is-not-convertible-to-string) – alseether

+0

@alseether:有趣的,但在這個職位的答案不明確。這聽起來像是一個Swift編譯器錯誤,但它沒有明確提及。 –

回答

0

有很多在這個例子裏缺,所以我不能重現確切的問題。

您在...中遺漏的代碼可能要複雜得多,也許是一連串的被動操作,而且我的猜測是實際的錯誤在該代碼的某處完全不同。由於Swift編譯器存在一些錯誤,你得到的錯誤信息只是誤導。

您可以嘗試將代碼分解爲更小的代碼,並查看編譯器現在是否在不同的位置出現故障,並試圖縮小它的範圍。

相關問題