λ°μν
μ΅μ λ(Optional)
- κ°μ΄ μμ μλ μκ³ μμ μλ μλ λ³μ
- κ°μ΄ μλ κ²½μ°λ₯Ό λνλΌ λμλ nilμ μ¬μ©
- λ³μ μ μν λ νμ μ΄λ Έν μ΄μ μ λ¬Όμν(?)λ₯Ό λΆμ¬ μ μ
- Optional(value) ννλ‘ μΆλ ₯
- μ΅μ λμ μ΄κΉκ°μ μ§μ νμ§ μμΌλ©΄ κΈ°λ³Έκ°μ nil
var name: String?
print(name) //nil
name = "hyebin"
print(name) //Optional("hyebin")
- μ΅μ λλ‘ μ μν λ³μλ μ΅μ λμ΄ μλ λ³μμλ λ€λ¦
var optional_name: String? = "hyebin"
let name: String = optional_name
Value of optional type 'String?' must be unwrapped to a value of type 'String'
name λ³μλ μ΅μ λμ΄ μλ Stringμ΄κΈ° λλ¬Έμ νμ κ°μ΄ μμ΄μΌ ν¨
optional_nameμ μ΅μ λλ‘ μ μΈλ λ³μμ΄κΈ° λλ¬Έμ, μ½λκ° μ€νλκΈ° μ κΉμ§λ κ°μ μ 무λ₯Ό μ μ μμ
Swift μ»΄νμΌλ¬λ μμ μ μν΄ μ΅μ λμ΄ μλ λ³μμ μ΅μ λλ‘ μ μΈλ λ³μλ₯Ό λμ ν μ μκ² λ§λ¦
μ΅μ λ λ°μΈλ© (Optional Binding)
- μ΅μ λμ κ°μ κ°μ Έμ€κΈ° μν΄ μ΅μ λμ λ²κ²¨λ΄λ νμ
- μ΅μ λμ κ°μ΄ μ‘΄μ¬νλμ§λ₯Ό κ²μ¬ν λ€, μ‘΄μ¬νλ€λ©΄ κ·Έ κ°μ λ€λ₯Έ λ³μμ λμ
- if let λλ if var μ¬μ©
- μ΅μ λμ κ°μ λ²κ²¨μ κ°μ΄ μλ€λ©΄ ifλ¬Έ μμΌλ‘ λ€μ΄κ°κ³ , nilμ΄λΌλ©΄ κ·Έλ₯ ν΅κ³Ό
if let name = optional_name{
print(name) //optional_nameμ κ°μ΄ μ‘΄μ¬νλ€λ©΄ ν΄λΉ κ° μΆλ ₯
}
//optional_nameμ κ°μ΄ μ‘΄μ¬νμ§ μλλ€λ©΄ ifλ¬Έ μ§λμΉ¨
- νλμ ifλ¬Έμμ μ¬λ¬ μ΅μ λ λ°μΈλ© κ°λ₯
if let name = optional_name, let email = optional_email{
print(name, email)
}
μ΅μ λ 체μ΄λ (Optional Chaining)
- μ°μμ μΈ μ΅μ λλ€μ μ°μμ μΌλ‘ νμΈ
- μ΅μ λμ μμ±μ μ κ·Όν λ, μ΅μ λ λ°μΈλ© κ³Όμ μ λ¬Όμν(?) ν€μλλ‘ μ€μ¬μ£Όλ μν
//μ΅μ
λ λ°μΈλ©
let array: [String]? = []
var isEmptyArray = false
if let array = array, array.isEmpty {
isEmptyArray = true
} else {
isEmptyArray = false
}
//μ΅μ
λ 체μ΄λ
let isEmptyArray = array?.isEmpty == true
κ°μ μΈλν (Force Unwrapping)
- μ΅μ λμ κ°μ΄ μλ€κ³ κ°μ νκ³ κ°μ λ°λ‘ μ κ·Ό
- μ΅μ λ νμ μ λ³μ μ΄λ¦ λ€μ λλν(!)λ₯Ό λΆμ¬ μ¬μ©
- λ§μ½ μ΅μ λ κ°μ΄ nilμΈ κ²½μ° λ°νμμλ¬ λ°μ
print(optional_name!)
fatal error: unexpectedly found nil while unwrapping an Optional value
nil λ³ν© μ°μ°μ (nil coalescing operator)
- "??"λ₯Ό μ¬μ©νμ¬ ν μ€λ‘ μΈλν μν
- μΈλννκ³ μ νλ μ΅μ λ λ³μ ?? nilμΌ λ λμ ν κ°
let name = optional_name ?? "abc"
print(name)
optional_nameμ κ°μ΄ μλ€λ©΄ optional_nameμ κ°μ΄ μΆλ ₯λκ³ , μλ€λ©΄ abcκ° μΆλ ₯
μμ¬μ μΌλ‘ λ²κ²¨μ§ μ΅μ λ (Implicitly Unwrapped Optional)
- μ΅μ λμ΄μ§λ§ μΈλννμ§ μκ³ λ μ¬μ©ν μ μλ μ΅μ λ
- μ΅μ λμ μ μν λ, λ¬Όμν(?) λμ λλν(!)λ₯Ό μ¬μ©
- nilμ ν¬ν¨ν μ μλ μ΅μ λ
- μ κ·Όν λ μ΅μ λ λ°μΈλ©μ΄λ μ΅μ λμ λ²κΈ°λ κ³Όμ μ κ±°μΉμ§ μκ³ λ λ°λ‘ κ°μ μ κ·Όν μ μλ€λ μ μμ μΌλ°μ μΈ μ΅μ λκ³Ό λ€λ¦
- κ°μ΄ μλλ° μ κ·Όμ μλνλ κ²½μ° λ°νμ μλ¬ λ°μ
λ°μν
'β¨οΈ Language > swift' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Swift] νμ μΊμ€ν (0) | 2023.02.06 |
---|---|
[Swift] ν΄λμ€(Class)μ ꡬ쑰체(Struct) (0) | 2023.02.06 |
[νλ‘κ·Έλλ¨Έμ€ LV.1] μμΈμμ κΉμλ°© μ°ΎκΈ° (0) | 2023.02.06 |
[νλ‘κ·Έλλ¨Έμ€ LV.1] λ¬Έμμ΄ λ€λ£¨κΈ° κΈ°λ³Έ (0) | 2023.02.06 |
[νλ‘κ·Έλλ¨Έμ€ LV.1] λ¬Έμμ΄ λ΄λ¦Όμ°¨μμΌλ‘ λ°°μΉνκΈ° (0) | 2023.02.06 |