itisjustK
코딩과 사람 사는 이야기
itisjustK
전체 방문자
오늘
어제
  • 분류 전체보기 (207)
    • 일이삼사오육칠팔구십일이삼사오육칠팔구십일이삼사오육칠.. (0)
    • Web (43)
      • html & css (9)
      • django & python (15)
      • java script (9)
    • iOS (51)
      • Swift (42)
      • SwiftUI (5)
    • CS (25)
      • 자료구조 (6)
      • 운영체제 (3)
      • 데이터베이스 (9)
      • 네트워크 (7)
    • PS (34)
      • 알고리즘 & 자료구조 (0)
    • Life (36)
    • Retrospective (15)
    • Book (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • mongodb
  • CoreData
  • binding
  • 어플
  • 연결리스트
  • 생활코딩
  • crud
  • CS
  • ios
  • AppleDevloperAcademy
  • 생활코딩 #이고잉 #HTML #코딩 #개발자
  • 세그멘테이션
  • nosql
  • 점주
  • SwiftUI
  • 독립서점
  • SWIFT
  • 개발자
  • 킨디
  • POSTECH

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
itisjustK

코딩과 사람 사는 이야기

[iOS 프로그래밍을 위한 스위프트 기초] Ch2. 다양한 표현 및 확장 - 25. assert / guard
iOS/Swift

[iOS 프로그래밍을 위한 스위프트 기초] Ch2. 다양한 표현 및 확장 - 25. assert / guard

2021. 7. 29. 17:24

Assertion

- 애플리케이션이 동작 도중에 생성하는 다양한 결과값을 동적으로 확인하고 안전하게 처리할 수 있도록 확인하고 빠르게 처리 가능. 

- 디버깅 모드에서만 동작

- 배포하는 애플리케이션에서는 제외

- 예상했던 조건의 검증을 위해 사용

 

var someInt: Int=0

//검증 조건 & 실패시 나타낼 문구 작성 , 뒤에 메세지는 안써도 됨
//검증 조건에 부합하면 지나감
assert(someInt == 0, "someIng != 0")

someInt = 1
assert(someInt == 0) // int값 바꾸고 assert 실행시키면 에러 발생. 여기서 멈춰버림
assert(someInt == 0,"someInt != 0") // 뒤에 메세지를 작성한 경우

func functionWithAssert(age:Int?) {
    assert(age != nil, "age == nil")
    
    assert((age! >= 0) && (age! <= 130), "나이값 입력이 잘못되었습니다")
    print("당신의 나이는 \(age!)세 입니다.")
}

functionWithAssert(age: 50)
functionWithAssert(age: -1) //동작 중지, 검증 실패
functionWithAssert(age: nil) //동작 중지, 검증 실패

assert에서 메세지를 적어줬을 때 메세지가 뜨는 방식

 

 

guard

- 애플리케이션이 동작 도중에 생성하는 다양한 결과값을 동적으로 확인하고 안전하게 처리할 수 있도록 확인하고 빠르게 처리 가능

- guard를 사용하여 잘못된 값의 전달 시 특정 실행구문을 빠르게 종료

- 디버깅 모드 뿐만 아니라 어떤 조건에서도 동작

- guard의 else 블럭 내부에는 특정 코드블럭을 종료하는 지시어 (return, break)가 꼭 있어야 함

- 타입 캐스팅, 옵셔널과도 자주 사용

- 그 외에도 단순 조건 판단 후 빠르게 종료할 때도 용이

 

func functionWithGuard(age: Int?) {
    guard let unwrappedAge = age,
          unwrappedAge < 130,
          unwrappedAge >= 0 else {
        print("나이값 입력이 잘못되었습니다")
        return
    }
    
    print("당신의 나이는 \(unwrappedAge)세입니다")
}

var count = 1

while true {
    guard count < 3 else {
        break
    }
    print(count)
    count += 1
}
//1
//2

func someFunction(info: [String: Any]) {
    guard let name = info["name"] as? String else {
        return
    }
    
    guard let age = info["age"] as? Int, age >= 0 else {
        return
    }
    
    print("\(name): \(age)")
}

someFunction(info: ["name":"jenny", "age":"10"])
someFunction(info: ["name":"mike"])
someFunction(info: ["name":"park", "age":10])   // park: 10

 

* if let 과 guard를 이용한 옵셔널 바인딩의 차이 

//1.if let 옵셔널 바인딩
if let unwrapped: Int = someValue {
    //do something
    unwrapped = 3
}
//if 구문 외부에서는 unwrapped 사용이 불가능
unwrapped = 5 // 에러 발생

//2. guard 옵셔널 바인딩
//guard 구문 외부에서 unwrapped 사용 가능
guard let unwrapped: Int = someValue else {
    return
}
unwrapped = 3 //에러 발생 안함

'iOS > Swift' 카테고리의 다른 글

[iOS 프로그래밍을 위한 스위프트 기초] Ch2. 다양한 표현 및 확장 - 27. 익스텐션  (0) 2021.07.30
[iOS 프로그래밍을 위한 스위프트 기초] Ch2. 다양한 표현 및 확장 - 26. 프로토콜  (0) 2021.07.29
[iOS 프로그래밍을 위한 스위프트 기초] Ch2. 다양한 표현 및 확장 - 24. 타입 캐스팅  (0) 2021.07.27
[iOS 프로그래밍을 위한 스위프트 기초] Ch2. 다양한 표현 및 확장 - 23. 옵셔널 체이닝과 nil 병합  (0) 2021.07.25
[iOS 프로그래밍을 위한 스위프트 기초] Ch2. 다양한 표현 및 확장 - 22. 인스턴스 생성 / 소멸 (init / deinit)  (0) 2021.07.24
    'iOS/Swift' 카테고리의 다른 글
    • [iOS 프로그래밍을 위한 스위프트 기초] Ch2. 다양한 표현 및 확장 - 27. 익스텐션
    • [iOS 프로그래밍을 위한 스위프트 기초] Ch2. 다양한 표현 및 확장 - 26. 프로토콜
    • [iOS 프로그래밍을 위한 스위프트 기초] Ch2. 다양한 표현 및 확장 - 24. 타입 캐스팅
    • [iOS 프로그래밍을 위한 스위프트 기초] Ch2. 다양한 표현 및 확장 - 23. 옵셔널 체이닝과 nil 병합
    itisjustK
    itisjustK

    티스토리툴바