web-dev-qa-db-ja.com

Swift 2:型のスロー関数から非スロー関数への無効な変換

Swift2に移植された(醜い)自作コードがいくつかあり、ラムダ関数で次のエラーメッセージが表示されます。

function with error

私が理解していなかったのは、エラースロー関数JSONObjectWithDataを使用してコード全体を処理し、エラーをキャッチすることです。コードには何もスローしません。それにもかかわらず、コンパイラは私がエラーをスローしていることを意味します。

この動作を理解する必要があります。 Swift2の新しいエラー処理の概念を最大限に活用するには、コードを改善する必要があることを知っているので、親切にしてください。

事前にどうもありがとうございました。

17
ChaosSpeeder

これは速かった。私はこの記事の少しの助けを借りて私の問題の解決策を見つけました:

http://www.hackingwithswift.com/new-syntax-Swift-2-error-handling-try-catch

nSErrorのキャッチだけでは不十分であるため、コードの最後に一般的なcatch句を配置する必要があります。

catch let error as NSError
{
   failure(error: error)
   return
}

// this is important -->
catch
{
}
38
ChaosSpeeder

前進するための最善の方法は、失敗関数のシグネチャを変更してErrorTypeを取ることだと思います。それならただ

catch let error {
    failure(error: error)
}

しましょう。

3
Andrew