2017-03-02 3 views
0

저는 Swift에서 guard 키워드를 사용하는 방법을 찾아 보았습니다. 최근에 개발자가 폐쇄에 오류이없는 경우 아래 코드가 "성공"을 인쇄 할 것이라고 말했습니다.스위프트 가드 키워드의 올바른 사용?

for attachment in attachments! { 
    attachment.fetchData { (data, error) in 
     guard let error = error else { 
      print(“success”) 
      return 
     } 

     print(error.localizedDescription) 
} 

나는 그의 성명서로 약간 혼란 스럽다. Apple에서 클로저 및 가드 키워드 문서를 읽은 후 오류가있을 때만 코드가 "성공"을 인쇄 할 것처럼 보입니다.

나는 그가 역으로 그것을 사용하고있는 것처럼 느낀다. 그러나 나는 틀릴지도 모른다. 오류가 있거나 없을 때 누군가가 성공을 인쇄하면 설명해 줄 수 있습니까??

감사합니다.

+0

. 가드 조건은 가드 조건이 거짓이거나 (가드가 '가드'인 경우 변수가 nil 인 경우) 입력됩니다. – dan

+0

@dan - 아, 알겠습니다. 오류가 오류와 같지 않거나 오류가없는 경우 (오류가 발생하지 않음) 성공을 읽습니다. 고맙습니다. 문이 사실이라면 가드 조건이 입력 될 것이라고 생각했습니다. if 문과 같습니다. 동의 할 답변을 제출 하시겠습니까? – BlueishVelvet

+0

해피 실행 경로의 논리를 캡슐화하는 데 'guard'를 사용해서는 안됩니다. 오류 로직에만 사용하십시오. 이 경우 대신'if let'을 사용하여 오류를 인쇄하고 거기로 돌아갑니다. 아니면'error'보다는'data'에'guard let '을 사용하십시오. – Hamish

답변

0

가드를 사용하여 오류를 제거하는 것은 매우 잘못된 것입니다. 데이터를 래핑하고 오류가 없는지 확인하고 오류가 발생하면 메소드를 조기 종료 할 수 있도록 사용해야합니다.

그냥 당신의 가드 문을 변경 :

오류가없는 경우 성공 인쇄
guard let data = data, error == nil else { 
    print(error ?? "") 
    return 
} 
+0

@LeoDabus 감사합니다. – BlueishVelvet

+0

당신은 환영합니다 –