[Swift] Optionals
๐ŸŽ iOS/Swift

[Swift] Optionals

 

๋Œ๋‹ค๋ฆฌ๋„ ๋‘๋“ค๊ฒจ๋ณด๊ณ  ๊ฑด๋„ˆ์ž.

 

Optional: ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์„ ์ˆ˜๋„ ์žˆ๊ณ  ์—†์„ ์ˆ˜๋„ ์žˆ๋Š” ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฒƒ

 

Optional์„ ์‚ฌ์šฉํ•  ๋•Œ๋Š” 2๊ฐ€์ง€ Case๊ฐ€ ์žˆ๋‹ค.

(1) ์–ด๋–ค ๊ฐ’์ด ์žˆ์–ด์„œ ๊ทธ ๊ฐ’์„ ์“ธ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ

(2) ์•„์˜ˆ ๊ฐ’์ด ์—†์–ด์„œ ์ ‘๊ทผํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ - nil: ์•„์ง ๊ฐ’์ด ์—†๋‹ค.

 

โ€ป ํ•„์š”์— ๋”ฐ๋ผ์„œ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์˜ต์…”๋„๋กœ ๋ฐ›๋Š” ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค ์ˆ˜๋„ ์žˆ๋‹ค.

 

 

์˜ต์…”๋„์„ ์ •์˜ํ•˜๋Š” ๋ฒ•

Optional์„ ์ •์˜ํ•  ๋•Œ๋Š” ์–ด๋–ค Type ๋’ค์— ?๋ฅผ ๋ถ™์ด๋ฉด ๋œ๋‹ค.

์ด ๋•Œ, Optional์„ ์“ธ ๋•Œ๋Š” ์–ด๋–ค ๊ฐ’์ด ๋“ค์–ด์˜ฌ์ง€ ๋ชจ๋ฅด๊ธฐ์— Type - Inferring์ด ์•ˆ๋˜๋ฏ€๋กœ Type์„ ๋ฐ˜๋“œ์‹œ ๋„ฃ์–ด์ค˜์•ผํ•œ๋‹ค.

 

 

Optional์—์„œ ๊ฐ’์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ๊ฐ’์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ• | Optional Binding

 

let userInputAge = "24"
let userAge:Int? = Int(userInputAge)

print(userAge) // Optional(24)

// Optional binding ์‚ฌ์šฉ ์‹œ
if let printAge = userAge{
    print(printAge)
} // 24

 

 

๊ฐ•์ œ ์–ธ๋ž˜ํ•‘ | Force - unwrapping

if ๋ฌธ์„ ์ด์šฉํ•ด์„œ nil์ด ์•„๋‹Œ์ง€ ํ™•์ธํ•˜๊ณ  ๋‚ด๋ถ€์— ๊ฐ’์ด ์žˆ๋Š”๊ฒŒ ํ™•์ธ๋˜๋ฉด !๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ฐ•์ œ๋กœ unwrapping ํ•  ์ˆ˜ ์žˆ๋‹ค.

! ์ž์ฒด๋Š” nil ์—ฌ๋ถ€์™€ ๊ด€๊ณ„ ์—†์ด ๋ณ€์ˆ˜๋ฅผ ๊บผ๋‚ด๋„๋ก ์–ธ๋ž˜ํ•‘์„ ์‹œ๋„ํ•˜๊ธฐ์— ํ”„๋กœ๊ทธ๋žจ์ด ๊ฐ•์ œ๋กœ ์ข…๋ฃŒ๋  ์ˆ˜ ์žˆ์–ด ์‚ฌ์šฉ์— ์ฃผ์˜ํ•ด์•ผํ•œ๋‹ค.

 

์Šค์œ„ํ”„ํŠธ ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ๋Š” !๊ฐ€ crash๋ฅผ ์œ ๋ฐœํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์–ด crash- operator๋ผ๊ณ ๋„ ๋ถˆ๋ฆฐ๋‹ค.