2017-10-19 4 views
0

は、私は次のコードを使用しました:'文字列'は '文字列'に変換できません。 ReactiveSwiftを使用して

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

意味:

  • self.alertMessageProperty.valueをので$0のタイプがあり、.on(failed:)タイプString?
  • であるfailedはタイプ((Error) -> Void)?でありますエラー$0.localizedDescriptionStringです。
  • 単純なプレイグラウンドでStringString?変数に割り当てると、正常に動作します。

それはコンパイルされませんし、私はこのエラーを取得する:

'String' is not convertible to 'String?' 

私はStringString?にSO転換だと思います。何が起きてる?

バージョン:3.2スウィフト - ReactiveSwiftので、私は、問題を正確に再現することはできませんあなたの例で行方不明たくさんある2.0.1

+0

1つはオプションですが、1つはありません。 – LinusGeffarth

+0

[Error: 'String'は 'String!'に変換できません](https://stackoverflow.com/questions/38186121/error-string-is-not-convertible-to-string) – alseether

+0

@alseether:興味深いが、その投稿の答えは明らかではない。それはSwiftコンパイラのバグのように聞こえるが、それは明らかに言及されていない。 –

答えて

0

...に残したコードはおそらくもっと複雑で、多分反作用操作の連鎖かもしれません。実際のエラーはそのコードのどこかでまったく異なるものです。取得しているエラーメッセージは、Swiftコンパイラのバグのため誤解を招くだけです。

あなたのコードを小さな断片に分割して、コンパイラが別の場所で失敗したかどうかを調べ、そのように絞り込むことができます。

関連する問題