iOS/🟠 Swift

Optionals - Optionals

woozzang 2020. 10. 9. 11:33

Optionals

1. μ˜΅μ…”λ„μ€ nil 을 담을 수 μžˆλŠ” 데이터 νƒ€μž…μž…λ‹ˆλ‹€.

nil 은 ' 값이 μ—†μŒ '을 λ‚˜νƒ€λ‚΄λŠ” null 의 Swift 식 ν‘œν˜„μž…λ‹ˆλ‹€.
var nonOptional: Int = 6
nonOptional = nil	// μ—λŸ¬

var myOptional: Int? = 3
myOptional = nil // μ˜΅μ…”λ„ νƒ€μž…μ—λŠ” nil 을 ν• λ‹Ή ν• μˆ˜ μžˆμŠ΅λ‹ˆλ‹€.

 


 

2. μ˜΅μ…”λ„μ€ λ°μ΄ν„°ν˜• 뒀에 ' ? ' λ₯Ό μΆ”κ°€ν•΄μ„œ ν‘œν˜„ν•©λ‹ˆλ‹€.

μ΄λ ‡κ²Œ λ§Œλ“  ν˜•μ„ μ˜΅μ…”λ„(데이터)ν˜• 이라고 μ½μŠ΅λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄ String? λ₯Ό μ˜΅μ…”λ„ 슀트링 이라고 μ½μŠ΅λ‹ˆλ‹€.

 

var gender: String? = "Male"

var address: String? = nil

 


 

3. μ˜΅μ…”λ„μ€ μ—΄κ±°ν˜•μœΌλ‘œ, 2가지 경우둜 λ‚˜λ‰˜μ–΄ μ €μž₯λ©λ‹ˆλ‹€.

  • 값이 μ—†λŠ” 경우 = nil

  • 값이 μžˆλŠ” 경우 = Optional( dataType
    * 이 값을 μ‚¬μš©ν•˜λ €λ©΄ Unwrapping ν•΄μ•Ό ν•©λ‹ˆλ‹€. 이것을 ' 값을 μΆ”μΆœν•œλ‹€ 'κ³  ν‘œν˜„ν•©λ‹ˆλ‹€. 이 λ‚΄μš©μ€ λ‹€μŒ κΈ€μ—μ„œ λ‹€λ£Ήλ‹ˆλ‹€.

 

public enum Optional<Wraped> : ExpressibleByNilLiteral {

    case none
    case some(Wrapped)
    public init(_ some: Wrapped)
    
    /// μ€‘λž΅..
    /// μ•Όκ³°λ‹˜ λ„μ„œ λ‚΄ μ½”λ“œ 인용
}

 


 

4. μ˜΅μ…”λ„μ˜ μ‚¬μš©μ€ μ—¬λŸ¬ λ©”μ‹œμ§€λ₯Ό μ•”μ‹œν•©λ‹ˆλ‹€.

  • " λ³€μˆ˜ λ˜λŠ” μƒμˆ˜κ°€ nil 일 μˆ˜λ„ μžˆμœΌλ―€λ‘œ μ‚¬μš©μ— μ£Όμ˜ν•˜μ„Έμš” "
    • 값이 μ—†λŠ” μ˜΅μ…”λ„ νƒ€μž… λ³€μˆ˜ λ˜λŠ” μƒμˆ˜μ— κ°•μ œλ‘œ μ ‘κ·Ό μ‹œ λŸ°νƒ€μž„ 였λ₯˜κ°€ λ°œμƒν•˜κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€.
  • " ν•¨μˆ˜μ˜ λ§€κ°œλ³€μˆ˜κ°€ μ˜΅μ…”λ„μΌ 경우, 값을 μ „λ‹¬ν•˜μ§€ μ•Šμ•„λ„ λ©λ‹ˆλ‹€ "
    • nil 을 κ³ λ €ν•΄μ„œ ν•¨μˆ˜λ₯Ό λ§Œλ“€μ—ˆμ„ 것이기 λ•Œλ¬Έμž…λ‹ˆλ‹€.

 


 

 

λ‹€μŒ κΈ€ : [iOS] Optional Unwrapping

 

[Optionals] Optional Unwrapping

Optional Unwrapping "μ˜΅μ…”λ„μΈ 값을 μ˜΅μ…”λ„μ΄ μ•„λ‹Œ κ°’μœΌλ‘œ μΆ”μΆœν•˜λŠ” 것." nil 이 μ•„λ‹Œ μ˜΅μ…”λ„ 값은 포μž₯λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. 값을 μ‚¬μš©ν•˜λ €λ©΄ κΊΌλ‚΄μ•Ό ν•©λ‹ˆλ‹€. 이것을 Unwrapping 이라 ν•©λ‹ˆλ‹€. ' 값을 μΆ”μΆœν•œλ‹€ '

woozzang.tistory.com

 

끝