μλ νμΈμ~
μ€λμ μ΅μ λμ λν΄μ μ 리νλ €κ³ ν©λλ€.
1. μ΅μ λμ κ°λ
μ΅μ λμ μ€μννΈμμ κ°μ΄ μμ μλ μκ³ , μμ μλ μλ μνλ₯Ό λνλ΄λ νμ μ λλ€.
λ€μ λ§ν΄μ λ³μλ μμκ° nilμΌ μλ μλ€λ κ²μ μλ―Έν©λλ€.
μ μΈλ°©λ²μ λ€μκ³Ό κ°μ΅λλ€.
var optionalInt: Int? // Int νμ
μ μ΅μ
λ λ³μ
var optionalString: String? // String νμ
μ μ΅μ
λ λ³μ
μμ μμμ²λΌ μ΅μ λ λ³μ μ μΈ μμλ μλ£ν λ€μ λ¬Όμνλ₯Ό λΆμ¬ μ¬μ©ν©λλ€.
2. μ΅μ λ μ¬μ©λ°©λ²
μμ μ€λͺ ν κ²μ²λΌ μ΅μ λμ κ°μ΄ μμ μλ, μμ μλ μκΈ° λλ¬Έμ μ¬μ©ν λλ λ°λμ κ°μ΄ μ‘΄μ¬νλμ§ νμ§ μλμ§ νμΈμ ν΄μΌ ν©λλ€.
μ΄λ, μ¬μ©νλ λ°©λ²μ ν¬κ² 4κ°μ§κ° μμ΅λλ€.
(1) μ΅μ λ λ°μΈλ©
μ΅μ λ λ°μΈλ©μ μ΅μ λμ κ°μ΄ μ‘΄μ¬νλμ§λ₯Ό νμΈνκ³ , κ°μ΄ μ‘΄μ¬ν κ²½μ° κ°μ λ³μ λλ μμμ ν λΉνλ λ°©λ²μ λλ€.
λ³΄ν΅ if let, guard let ꡬ문μ μ΄μ©νμ¬ κ°μ ν λΉν΄ μ¬μ©ν©λλ€.
var optionalInt: Int? = 10
if let intValue = optionalInt {
print("optionalIntμ κ°μ \(intValue)μ
λλ€.")
} else {
print("optionalIntμλ κ°μ΄ μμ΅λλ€.")
}
μμ μ½λμμλ optianalIntμ κ°μ΄ μ‘΄μ¬νλ€λ©΄ intValueμ κ°μ΄ ν λΉλκ³ ν΄λΉ λΈλ‘μ μ€ννκ² λκ³ λ§μ½ nilμ΄λΌλ©΄ else λΈλ‘μ μ€ννκ² λ©λλ€.
(2) μ΅μ λ 체μ΄λ
μ΅μ λ 체μ΄λμ μ΅μ λ λ³μ, λ©μλμ μ κ·Όν λ μ¬μ©νλλ° ν΄λΉ κ°μ΄ nilμΈ κ²½μ° nilμ λ°ννκ² λκ³ , κ°μ΄ μ‘΄μ¬νλ€λ©΄ μ κ·Όνμ¬ νλ‘νΌν°λ λ©μλμ μ κ·Όν μ μμ΅λλ€.
var optionalStr: String? = "μλ
νμΈμ! λ°κ°μ΅λλ€~"
if let count = optionalStr?.count {
print("optionalStrμ \(count)κ°μ λ¬Έμλ₯Ό κ°μ§κ³ μμ΅λλ€.")
} else {
print("optionalStrμλ κ°μ΄ μμ΅λλ€.")
}
μ΅μ λ 체μ΄λμ ν΅ν΄ optionalStrμ count νλ‘νΌν°μ μ κ·Όνκ³ μλ μμμ λλ€. μμλ§μλλ¦° κ²μ²λΌ nilμ΄λΌλ©΄ else λΈλ‘μ μ§ννκ³ nilμ΄ μλλΌλ©΄ countμ μ κ·Όν΄ count λ³μμ ν λΉνμ¬ μ¬μ©ν μ μμ΅λλ€.
(3) nil λ³ν© μ°μ°μ
nil λ³ν© μ°μ°μλ ??λ₯Ό μ΄μ©νμ¬ nilμΌ κ²½μ° κΈ°λ³Έκ°μ λ°ννλ μ°μ°μμ λλ€.
var optionalStr: String? = nil
let str = optionalStr ?? "μλ
νμΈμ! λ°κ°μ΅λλ€~"
print(str) // μΆλ ₯ κ²°κ³Ό: "μλ
νμΈμ! λ°κ°μ΅λλ€~"
(4) κ°μ μΈλν
κ°μ μλνμ μ΅μ λ κ°μ΄ nilμΈ κ²½μ°, λ°νμ μ€λ₯λ₯Ό λ°μμν€μ§λ§ κ°μ΄ μ‘΄μ¬νλ€λ©΄ ν΄λΉ κ°μ λ°ννμ¬ μ¬μ©ν μ μλ λ°©λ²μ λλ€.
λ°νμ μ€λ₯λ₯Ό λ°μμν€κΈ° λλ¬Έμ κ°λ₯ν μ§μν΄μΌ νλ λ°©λ²μ λλ€.
var optionalInt: Int? = 10
let intValue = optionalInt!
print("optionalIntμ κ°μ \(intValue)μ
λλ€.")
var optionalInt: Int?
let intValue = optionalInt! // λ°νμ μλ¬
3. μ΅μ λ μ¬μ© μμ
μ΅μ λμ μ¬μ©νλ κ²½μ°λ λ§μ§λ§
κ°λ¨ν μμλ‘ restAPIλ₯Ό νΈμΆν λ, μλ²μμ μ¨ μλ΅κ°μ μ²λ¦¬νλ μμλ₯Ό λ€μ΄λ³΄κ² μ΅λλ€.
func fetchDatas(completion: @escaping (String?) -> Void) {
// URLSession κ°μ²΄ μμ±
let session = URLSession.shared
// URL κ°μ²΄ μμ±
guard let url = URL(string: "https://api/data") else {
completion(nil) // URLμ΄ μ ν¨νμ§ μμΌλ©΄ nil λ°ν
return
}
// URLRequest κ°μ²΄ μμ±
let request = URLRequest(url: url)
// URLSessionDataTask κ°μ²΄ μμ±
let task = session.dataTask(with: request) { (data, response, error) in
// μλ΅μ΄ μ μμ μΌλ‘ μμ λ
if error == nil {
// μ΅μ
λ λ°μΈλ©μ ν΅ν΄ dataκ° nilμΈμ§ νμΈ
if let data = data {
// nilμ΄ μλλΌλ©΄ κ²°κ³Όκ°μ ν λΉ
let result = String(data: data, encoding: .utf8)
completion(result) // κ²°κ³Ό λ°ν
} else {
completion(nil) // λ°μ΄ν°κ° μ ν¨νμ§ μμ κ²½μ° nil λ°ν
}
} else {
completion(nil) // μλ¬ λ°μ μ nil λ°ν
}
}
task.resume()
}
μμ μ½λμμ dataλ₯Ό μ΅μ λ λ°μΈλ©μ ν΅ν΄ nil μ¬λΆλ₯Ό νλ¨νκ³ nilμ΄ μλλΌλ©΄ completionμ ν΅ν΄ λ°μ΄ν°λ₯Ό λκ²¨μ£Όκ³ μλ κ²μ λ³Ό μ μμ΅λλ€. μ’μ μμκ° λμμΌλ©΄ μ’κ² λ€μ.
μ€λμ μ΅μ λμ λν΄μ μ λ¦¬ν΄ λ΄€μ΅λλ€.
κ·ΈλΌ μ΄λ§ ππ» ππ» ππ»
'iOS > Swift' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Swift] 컬λ μ νμ (Collection Type)μ λν΄μ (0) | 2023.03.26 |
---|---|
[Swift] Enum(μ΄κ±°ν)μ λν΄μ (0) | 2023.03.22 |
[Swift] μ κ·Όμ μ΄μ(Access Control)μ λν΄μ (0) | 2023.03.15 |
[Swift] Closureμ λν΄μ μμ보μ (0) | 2023.03.13 |
[Swift] Genericsμ λν΄μ (0) | 2023.03.09 |