2016-12-23 7 views
-2
guard let value = notification.userInfo?[Notification.BLEKey.value] as? Data, 
     let packet = value.pt_hexString, 
     let per = notification.userInfo?[Notification.BLEKey.peripheral] as? CBPeripheral, 
     PTConnectManager.shared().currentPer == per 
     else { return } 

上記のコードは機能しますが、読みにくく、フレンドリーな解決策がありますか?ありがとう。swift3でエレガントにするためにオプションのアンラップを作成する方法

+1

私には合理的に見えます。あなたのガードステートメントの最後の部分については確信していません。 'PTConnectManager.shared()。currentPer'への代入のどの部分が失敗する可能性がありますか? –

+1

swift3を使用して、置き換えます –

+0

ああ、右。まだその変更には使用しないでください。率直に私は 'where'構文を好んでいました。 –

答えて

1

個人的に私は単一のguardステートメントで囲まれた複数の句が好きではありません。

guard let value = notification.userInfo?[Notification.BLEKey.value] as? Data 
    else {return} 
guard let packet = value.pt_hexString 
    else {return} 
guard let per = notification.userInfo?[Notification.BLEKey.peripheral] as? CBPeripheral 
    else {return} 
// ... and so on 

私ははるかに読みやすい見つける:私の見解で得たものは、複数の上に、guard文はありません、それは、データを介して取得しなければならないことをドアのシリーズのようなものです。

+1

個人的な味わいでしょう。私はマルチパーツガードや 'if let'ステートメントには何の問題もなく、あなたのバージョンに好んでいます(違和感なく、読みやすいと思います)。 –

関連する問題