ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Optional
    STUDYING/Swift 2021. 10. 17. 14:42
    728x90

    Optional

    Optional Type
    Expression : ?

    • 기본 구조
    var myString: String? // Optional
    var myString2: String = String() // Non-Optional 반드시 이니셜라이저 해야함. 값으로서 존재는 함

    nil : 아무것도 없고 어떤 상태인지 모르는 전혀 존재하지 않는 상태

    • 네트워크로 데이터를 받을 때 Optional 사용
    • 값이 있는 상태를 가정해서 사용할 수 없음
    • 값이 무조건 있다는것을 가정하는 방식인 Force Unwrapping : !
      • 그러나 Force Unwrapping은 지양하는 것이 좋다.

    안전하게 옵셔널을 제거하기 위해서 Optional Binding을 사용한다.

    Optional Binding

    옵셔널 바인딩은 nil인지, 아니면 값이 있는지, 경우에 따라 결과를 달리 하고 싶을 수 있을 때 사용해 옵셔널을 검사한다.

    if let hasScore = myScore {
      if hasScore < 50 {
          // 값이 있을때만 적용됨
       }
    } else {
    
    }

    Optional Chaining

    옵셔널 체이닝은 하위 property에 optional 값이 있는지 연속적으로 확인하면서, 중간에 하나라도 nil이 발견된다면 nil이 반환되는 형식이다.

    class People {
        var score: Score?
    }
    
    class Score {
        var testName: String?
    }
    
    var people: People? = People()
    if let hasName =  people?.score?.testName {
        if hasName == "eojin" {
    
        }
    }

    Nil Coalescing Operator

    값을 변경하지 않은 채, nil인경우 예외적으로 특정 값으로 표현된다.

    var myScore: Int?
    if myScore ?? 0 < 50 {
        print("number")
    }

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

    Swift란  (0) 2021.10.15
Designed by Tistory.