π©π»π»/Swift
10. μ΅μ λ - iOS νλ‘κ·Έλλ°μ μν μ€μννΈ κΈ°μ΄
reujusong
2020. 6. 17. 17:31
- μ΅μ λμ΄λ??
- κ°μ΄ μμ μλ, μμ μλ μμμ νν
- nilμ΄ ν λΉ λ μ μλμ§ μλμ§ νν
// someOptionalParmμ nilμ΄ ν λΉ λ μ μλ€.
func someFunction(someOptionalParam: Int?) {
// ....
}
/// someOptionalParmμ nilμ΄ ν λΉ λ μ μλ€.
func someFunction(someOptionalParam: Int) {
// ....
}
someFunction(someOptionalParam: nil)
// someFunction(someParam: nil)
- μ΅μ λμ μ°λ μ΄μ
- λͺ μμ νν
1. nilμ κ°λ₯μ±μ μ½λλ§μΌλ‘ ννκ°λ₯
2. λ¬Έμ/μ£Όμ μμ± μκ° μ μ½
- μμ ν μ¬μ©
1. μ λ¬λ°μ κ°μ΄ μ΅μ
λμ΄ μλλΌλ©΄ nil 체ν¬λ₯Ό νμ§ μκ³ μ¬μ©κ°λ₯
2. μμΈ μν©μ μ΅μν νλ μμ ν μ½λ©
3. ν¨μ¨μ μ½λ©
- μ΅μ λ λ¬Έλ²κ³Ό μ μΈ
- μ΅μ λ λ¬Έλ² = enum + generics
- μ΅μ λ μ μΈ
enum Optional<Wrapped>: ExpressibleByNiliteral {
case none
case some(Wrapped)
}
let optionalValue: Optional<Int> = nil
let optionalValue: Int? =nil
- μ΅μ λ νν
1. λλν(!)λ₯Ό μ΄μ©ν μμμ μΆμΆ μ΅μ λ
// Implicitly Unwrapped Optional
var implicitlyUnwrappedOptionalValue: Int! = 100
switch implicitlyUnwrappedOptionalValue {
case .none:
print("This Optional variable is nil")
case .some(let value):
print("Value is \(value)")
}
// κΈ°μ‘΄ λ³μμ²λΌ μ¬μ© κ°λ₯
implicitlyUnwrappedOptionalValue = implicitlyUnwrappedOptionalValue + 1
// nil ν λΉ κ°λ₯
implicitlyUnwrappedOptionalValue = nil
// μλͺ»λ μ κ·ΌμΌλ‘ μΈν λ°νμ μ€λ₯ λ°μ
//implicitlyUnwrappedOptionalValue = implicitlyUnwrappedOptionalValue + 1
2. λ¬Όμν(?)λ₯Ό μ΄μ©ν μ΅μ λ
// Optional
var optionalValue: Int? = 100
switch optionalValue {
case .none:
print("This Optional variable is nil")
case .some(let value):
print("Value is \(value)")
}
// nil ν λΉ κ°λ₯
optionalValue = nil
// κΈ°μ‘΄ λ³μμ²λΌ μ¬μ©λΆκ° - μ΅μ
λκ³Ό μΌλ° κ°μ λ€λ₯Έ νμ
μ΄λ―λ‘ μ°μ°λΆκ°
//optionalValue = optionalValue + 1