2016-12-23 3 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' 진술 문에 아무런 문제가 없으며, 당신의 버전에 더 선호한다. –

관련 문제