์ด๊ฑฐํ์ ๋ค์ํ ์ผ์ด์ค๋ก ๋๋๋ฉฐ, ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ถ๊ธฐ ์ฒ๋ฆฌ๋ฅผ ํ ๋ ์ฃผ๋ก switch๋ฌธ์ ์ฌ์ฉํ๋ค.
Swift 5์์ ์๊ฐ๋ @unknown default๋ ์ด๊ฑฐํ(enum) ์ฒ๋ฆฌ ์ ์๋ก์ด ์ผ์ด์ค๊ฐ ์ถ๊ฐ๋ ๊ฐ๋ฅ์ฑ์ด ์๋ ์ผ์ด์ค๋ฅผ ๋๋นํ๋๋ก ์ค๊ณ๋ ๊ธฐ๋ฅ์ด๋ค.
Frozen Enum์ ๋ ์ด์ ์๋ก์ด ์ผ์ด์ค๊ฐ ์ถ๊ฐ๋์ง ์์ ๊ฒ์ด ๋ณด์ฅ๋ ์ด๊ฑฐํ์ด๋ค.
์ฌ์ฉ์๊ฐ ์ง์ ์ ์ํ ์ด๊ฑฐํ ๋๋ถ๋ถ์ด ์ฌ๊ธฐ์ ํด๋นํ๋ค.
์ด ์ด๊ฑฐํ์ ์ถํ์ ์๋ก์ด ์ผ์ด์ค๊ฐ ์ถ๊ฐ๋์ง ์์ ๊ฒ์ผ๋ก ๊ฐ์ฃผ๋๋ฉฐ, ๋ชจ๋ ์ผ์ด์ค๋ฅผ ๋ช ์์ ์ผ๋ก ์ฒ๋ฆฌํด์ผ ํ๋ค.
enum Food {
case chicken
case pizza
case hamburger
}
let myChoice = Food.chicken
switch myChoice {
case .chicken:
print("์นํจ์ ์ ํํ์ต๋๋ค.")
case .pizza:
print("ํผ์๋ฅผ ์ ํํ์ต๋๋ค.")
case .hamburger:
print("ํ๋ฒ๊ฑฐ๋ฅผ ์ ํํ์ต๋๋ค.")
}
์ ์ฝ๋์ ๊ฐ์ด ๋ชจ๋ ์ผ์ด์ค๋ฅผ ๋ช ์์ ์ผ๋ก ๋ค๋ฃจ๊ฑฐ๋ default๋ฅผ ์ฌ์ฉํด์ค๋ค.
Nonfrozen Enum์ ์ถํ ์๋ก์ด ์ผ์ด์ค๊ฐ ์ถ๊ฐ๋ ์ ์๋ ์ด๊ฑฐํ์ด๋ค.
@unknown default๋ Nonfrozen Enum(๋น๊ณ ์ ์ด๊ฑฐํ)์์ ์ ์ฉํ๋ค.
Apple์ ํ๋ ์์ํฌ์์ ์ ๊ณตํ๋ ์ด๊ฑฐํ ๋๋ถ๋ถ์ด Nonfrozen Enum์ ์ํ๋ค๊ณ ํ๋ค.
import AVFoundation
func handleAuthorizationStatus(_ status: AVAuthorizationStatus) {
switch status {
case .authorized:
print("์ฌ์ฉ์๊ฐ ๊ถํ์ ํ์ฉํ์ต๋๋ค.")
case .denied:
print("์ฌ์ฉ์๊ฐ ๊ถํ์ ๊ฑฐ๋ถํ์ต๋๋ค.")
case .restricted:
print("๊ถํ์ด ์ ํ๋์์ต๋๋ค.")
case .notDetermined:
print("๊ถํ ์์ฒญ ์ ์ํ์
๋๋ค.")
@unknown default:
print("์๋ก์ด ์ํ๊ฐ ์ถ๊ฐ๋์์ต๋๋ค.")
}
}
์ ์์์์ AVAuthorizationStatus๋ Nonfrozen Enum์ด๋ฏ๋ก ์๋ก์ด ์ผ์ด์ค๊ฐ ์ถ๊ฐ๋ ๊ฐ๋ฅ์ฑ์ด ์๋ค.
์ด ๊ฒฝ์ฐ, @unknown default๋ฅผ ์ฌ์ฉํด ๋๋นํ ์ ์๋ค.
ํ์ฌ ์ ์ฝ๋๋ ๋ชจ๋ ์ผ์ด์ค๋ฅผ ๋ค๋ฃจ๊ณ ์์ด @unknown default๊ฐ ์๋ํ์ง ์๋๋ค.
salad ์ผ์ด์ค์ ๋ํ ์ฒ๋ฆฌ๋ฅผ ํ์ง ์์๊ธฐ ๋๋ฌธ์ ์ปดํ์ผ๋ฌ๋ ๊ฒฝ๊ณ ๋ฅผ ํ์ํ๋ค.
default๋ฅผ ์ฌ์ฉํ ๋๋ ๋ณ๋์ ๊ฒฝ๊ณ ๊ฐ ํ์๋์ง ์๊ณ ์๋กญ๊ฒ ์ถ๊ฐ๋ ์ผ์ด์ค์ ์์ ์ฑ ๋ณด์ฅ์ ํ ์ ์๋ค.
๐ Reference
https://babbab2.tistory.com/146
https://velog.io/@hope1053/iOS-unknown-default
[Swift] Type Aliases(ํ์ ๋ณ์นญ) (0) | 2024.11.25 |
---|---|
[ Swift ] Error Handling (1) | 2024.11.05 |
Alert๊ณผ ๋๊ธฐ/๋น๋๊ธฐ ๊ฐ๋ (0) | 2024.08.29 |
UITextField์ ๋ธ๋ฆฌ๊ฒ์ดํธ ํจํด (0) | 2024.08.28 |
[ Swift ] ํ๋กํ ์ฝ(protocol) (0) | 2024.08.25 |