개발/아이오에스

swift] guard문 ....else{...

dev.jake 2020. 12. 21. 10:28

guard let soundAsset: NSDataAsset = NSDataAsset(name: "sound") else{
            print("음원 파일 에셋 가져올 수 없습니다")
            return
        }

else 앞에 let soundAsset: NSDataAsset = NSDataAsset(name: "sound")  조건이 ture이면 guard문은 그냥 지나가고, false 이면 else 구문 print("음원 파일 에셋 가져올 수 없습니다") 을 수행한 뒤 함수를 바로 종료한다.

 

암묵적인 종료가 아니라 명시적인 종료이므로 return을 적어주는 모습을 볼 수 있다. 없으면 - 컴파일 에러 ( throw라도 사용)

 

guard 문을 사용하면 let soundAsset: NSDataAsset = NSDataAsset(name: "sound") // let으로 받으면서 nil 체크를 하는 동시에 그 값을 else를 통해 사용할 수 있다.

if문을 쓰면 nil 체크 후에 unwrap을 위해 !를 붙여서 쓰거나 if 블럭 안에서 써야한다. -> 이러한 단점을 깔끔하게 해결 -> guard문 

 

출처 https://docs.swift.org/swift-book/