2016-12-26 11 views
-1

以下のブロックは上記のものの代替品ですか?Guard vs if-let

let task = urlSession.dataTaskWithRequest(urlRequest) 
    { (data, response, error) -> Void in 
    if let myerror = error! { 
     print("Error while fetching remote rooms: \(myerror)") 
     return 
    } 
+2

が、この中に見てください:[ガード対IF-てみましょう](http://stackoverflow.com/questions/32256834/swift-2-0-guard-vs-if-let) –

+0

にhttp:/ /stackoverflow.com/questions/32256834/swift-2-0-guard-vs-if-let –

+2

これが重複しているかどうかにかかわらず、 'if let myerror = error! 'の' 'error''を強制的にアンラップするだけで簡単です違う。オプションのバインディングのポイントは、値を使用する前に値が 'nil'かどうかをテストすることです。 'if let'ブロックはある時点でクラッシュするでしょう。 – par

答えて

1

いいえ、これは正しい "ガードレット"の代替方法です。

let task = urlSession.dataTaskWithRequest(urlRequest) { (data, response, error) -> Void in 
    guard error == nil else { 
     print("Error while fetching remote rooms: \(error)") 
     return 
    } 

    // guard passed, thus there is no error 
} 
関連する問題