μΌ | μ | ν | μ | λͺ© | κΈ | ν |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- weatherKit
- Protocol
- font book
- RunningTimer
- λ¬λνμ΄λ¨Έ
- App Store Connect
- UIAlertAction
- swift
- CLLocationManagerDelegate
- addannotation
- λ¬λκΈ°λ‘μ±
- dispatchsource
- SwiftUI Boolean κ°
- Required Reason API
- Xcode
- λ¨μΌ μ± μμμΉ
- AnyObject
- weak var
- MKMapViewDelegate
- μλ¬Έ κ°μΈμ 보μ²λ¦¬λ°©μΉ¨
- Startign Assignments
- MKMapItem
- Timer
- xcodeλ‘ λ μ¨μ± λ§λ€κΈ°
- μ체κ΄λ¦¬μ
- UICollectionViewFlowLayout
- CoreLocation
- νκ΅μ΄ κ°μΈμ 보μ²λ¦¬λ°©μΉ¨
- ν΄λ‘μ μ μΊ‘μν
- WeatherManager
Archives
- Today
- Total
VesselWheel
μ΅μ λ(Optional) λ³Έλ¬Έ
μ΅μ λ
π‘ κ°μ΄ μμμ ν¬ν¨νλ μ΅μ λμ κ°λ
- μ΅μ
λκ³Ό nil
- κ°μ΄ μμ μ μλ μν©μμ μ΅μ λ(Optional)μ μ¬μ©ν©λλ€.
- μ΅μ λμ λ¬Όμν ? λ‘ λνλ λλ€. (νμ μ΄λ Έν μ΄μ )
- μ΅μ
λμ λ κ°μ§ κ°λ₯μ±μ λνλ
λλ€.
- κ°μ΄ μκ³ μ΅μ λλ‘ λν(wrapping)ν΄λμ κ°μ μΈλν(unwrapping)νμ¬ ν΄λΉ κ°μ μ‘μΈμ€ν μ μλ€.
- κ°μ΄ μ ν μλ€.
- μ΅μ λ νμ λΌλ¦¬μ μ°μ°μ λΆκ°λ₯
- μμ μ½λ
// μΆμ½ νμ νν var serverResponseCode: Int? = 404 // μ μ νμ νν var myPetName: Optional<String> = "λ©λ©μ΄" func pay(with card: String?) { // ꡬν μ½λ } // μ΅μ λ νμ λΌλ¦¬μ μ°μ°μ λΆκ°λ₯ var num1: Int? = 4 var num2: Int? = 2 num1 + num2 // μλ¬ λ°μ! let optionalString1: String? = "Hello, " let optionalString2: String? = "world!" // μ΅μ λ String κ°λ€μ μ°κ²°νλ €λ μλ let result = optionalString1 + optionalString2 // μλ¬ λ°μ!
- βοΈ nil
- λ³μμ nilμ ν λΉν¨μΌλ‘μ¨ κ°μ΄ μλ μνμ μ΅μ λ νλ‘νΌν°λ₯Ό λ§λ€ μ μμ΅λλ€.
- μμ μ½λ
var serverResponseCode: Int? = 404 serverResponseCode = nil var surveyAnswer: String? // surveyAnswer λ μλμΌλ‘ nil λ‘ μ€μ λ©λλ€.
- βοΈ μ΅μ λ(Optional)
- π‘ 42λΌλ μ«μ λ³μλ₯Ό μ»΄ν¨ν°λ μ΄λ»κ² μ μ₯νκ³ μ½μκΉμ? Swiftμμλ λ³μλ₯Ό μ μ₯νλ 곡κ°μ λ°μ€λ₯Ό μμλμ΅λλ€. μ§μ§ λ°μ€λ μλκ³ μ ν¬κ° μ€λ λ°°μΈ μ΅μ λμ λν λΉμ λ₯Ό λ€μ΄λ³Έκ±΄λ°μ. λΉ κ°μ μ»΄ν¨ν°μκ²λ μμ΄μΌ ν κ²μ΄ μλ€! π¨λ λλμ΄κΈ° λλ¬Έμ μλ¬λ₯Ό λ°μμν€κ³ μ΄ν리μΌμ΄μ μ μ’ λ£μν€κΈ°λ ν©λλ€. λλ¬Έμ μ΄λ κ² λͺ¨λ λ³μμ λ°μ€λ₯Ό μμλκ³ μ μ₯μ νλ©΄ κ°μ΄ μμ λμ μμ λ λͺ¨λ μμ νκ² μ»΄ν¨ν°κ° κ°μ μ½μ μ μμ΅λλ€ π
- μ΅μ
λ λ°μΈλ©
- μ΅μ λ λ°μΈλ©μ μ΅μ λ κ°μ΄ λΉκ°μΈμ§ μ‘΄μ¬νλμ§ κ²μ¬ν ν, μ‘΄μ¬νλ κ²½μ° κ·Έ κ°μ λ€λ₯Έ λ³μμ λμ μμΌ λ°μΈλ©νλ κ²μ μλ―Έν©λλ€.
- μ΄λ κ² λΉ κ°μ 체ν¬νκ³ μ΅μ λ κ°μ μΈλν ν΄μ£Όλ κ²μ κ°μ λ‘ μΈλννλ κ²λ³΄λ€ ν¨μ¬ μμ ν©λλ€.
- if let / if var, guard let / guard varμ μ¨μ μ΅μ λ κ°μ μΆμΆν΄ μλ‘μ΄ λ³μμ λ°μΈλ©ν©λλ€.
- if let vs guard let μ°¨μ΄μ
- if letμ ifλ¬Έμ μ½λ ꡬνλΆ λ΄μμλ§ μμ μ¬μ©μ΄ κ°λ₯ν©λλ€.(μ§μ λ³μ)
- guard let μ guardλ¬Έμ ν΅κ³Όν μμλ₯Ό guardλ¬Έ λ°μμ μ¬μ©μ΄ κ°λ₯ν©λλ€.(μ μλ³μ)
- μμ μ½λ
if let <#μμ μ΄λ¦#> = <#μ΅μ
λ κ°#> {
// ꡬν μ½λ μ΅μ
λ κ°μ΄ let μμμ λ΄κΈ΄λ€λ©΄(True)
}
let roommateNumbers: Int? = nil
if let roommates = roommateNumbers {
print (roommates)
}
// μΆλ ₯κ° μμ
let ticketCounts: Int? = 3
if let ticket = ticketCounts {
print (ticket)
}
// μΆλ ₯κ°: 3
// μ΅μ
λ λ°μΈλ© ν λ³μκ° μ¬λ¬ κ°μΈ κ²½μ°
let boyName : String?
let girlName : String?
boyName = "νλ"
girlName = "λμ°"
// , μ½€λ§λ‘ λμ΄ν©λλ€
if let boy = boyName,
let girl = girlName {
print(boy, girl)
}
// μΆλ ₯κ°: νλ λμ°
let x : Int? = 10
let y : Int? = nil
func opbinding() {
guard let x = x else { return }
print(x)
guard let y = y else { return } // yλ nil μ΄λ―λ‘ μ¬κΈ°μ return
print(y) // μμμ return νμκΈ° λλ¬Έμ μ΄ μ½λ λΌμΈμ μ€νλμ§ μμ
}
opbinding()
// μΆλ ₯κ°: 10
- μ΅μ
λ κ°μ μΈλν
- κ°μ μΈλν(Force unwrapping)μ !λ₯Ό μ¨μ κ°μ λ‘ μ΅μ λ μΆμΆν©λλ€.(λ³μ μμ !λ₯Ό λΆμ΄λ κ²μ notμ μλ―Έ - ν·κ°λ¦¬μ§ λ§κ²!)
- κ°μ μΈλνμ μλͺ» μ¬μ©ν κ²½μ° νλ‘κ·Έλ¨μ΄ λΉμ μμ μΌλ‘ μ’ λ£λ μλ μμΌλ―λ‘ λ°λμ nilμ΄ μλ κ²μ΄ νμ€ν μν©μμ μ¬μ©ν΄μΌν©λλ€.(μ΅λν μμ°λκ² μ’μ΅λλ€)
- μ½λ μμ
let number = Int("42")! // Stringκ°μ Intλ‘ λ³ννλ ν¨μλ returnκ°μΌλ‘ μ΅μ λ κ°μ λ°νν©λλ€. print(number) // μΆλ ₯κ°: 42 // κ°μ μΈλνμ΄ μ€ν¨ν κ²½μ° let address: String? = nil print(address!) // μλ¬π¨ λ©μμ§: Unexpectedly found nil while unwrapping an Optional value
- μ΅μ
λ λ³μμ κ°μ΄ nilμΌ λλ₯Ό μν΄ κΈ°λ³Έκ° μ€μ νκΈ°
- κ°μ΄ nilμΌ κ²½μ°λ₯Ό μν΄ κΈ°λ³Έκ°μ μ€μ ν μ μμ΅λλ€(nil-coalescing)
- ?? μ μ¬μ©νμ¬ κΈ°λ³Έκ°μ μ¬μ©ν μ μλλ°, ?? μ΄ μ¬μ©νμ¬ κΈ°λ³Έκ°μ λΆμ¬ν λ³μλ μ΅μ λ νμ μ΄ μλλλ€
- let(var) a = b ?? c ννλ‘ μ΄λ£¨μ΄μ§λλ° bλ μ΅μ λ νμ μ΄κ³ , bκ° nilμΌ κ²½μ°λ aμ cκ° λμ λκ³ , nilμ΄ μλ κ²½μ°μλ μ΅μ λμ μ κ±°ν κ°μ΄ aμ λμ λ©λλ€
var optNumber: Int? = 3 let number = optNumber ?? 5 print(number) // μΆλ ₯κ° : 3 //numberλ Int? νμ μ΄ μλλΌ **Int νμ ** optNumber = nil let number2 = optNumber ?? 5 print(number) // μΆλ ₯κ° : 5 //numberλ Int? νμ μ΄ μλλΌ **Int νμ ** print(heartPath) // imagePaths["heart"]κ° nilμΌ λ // μΆλ ₯κ°: "/images/default.png"
- κ°μ΄ nilμΌ κ²½μ°λ₯Ό μν΄ κΈ°λ³Έκ°μ μ€μ ν μ μμ΅λλ€(nil-coalescing)
- μ΅μ
λ 체μ΄λ
- μ΅μ λμ μ°μμ μΌλ‘ μ¬μ©νλ κ²μ μ΅μ λ 체μ΄λμ΄λΌκ³ ν©λλ€.
- . μ ν΅ν΄ λ΄λΆ νλ‘νΌν°λ λ©μλμ μ°μμ μΌλ‘ μ κ·Όν λ μ΅μ λ κ°μ΄ μμΌλ©΄ μ΅μ λ 체μ΄λμΌλ‘ μ κ·Όν μ μμ΅λλ€.
- μμ μ½λ
struct Person { var name: String var address: Address } struct Address { var city: String var street: String var detail: String } let sam: Person? = Person(name: "Sam", address: Address(city: "μμΈ", street: "μ λ Όνλ‘", detail: "100")) print(sam.address.city) // μλ¬ π¨. μλ¬ λ©μμ§: Chain the optional using '?' to access member 'address' only for non-'nil' base values sam?.address.city // β // μΆλ ₯κ°: μμΈ
- λ§μ½ samμ΄ μ΅μ λμ΄ μλ Person νμ μ΄μλ€λ©΄ sam.address.city κ° κ°λ₯ν©λλ€. νμ§λ§ samμ΄ μ΅μ λ νμ μ΄κΈ° λλ¬Έμ addressμ μ κ·Όνλ €λ©΄ sam?.address.city ννλ‘ μ΄λ£¨μ΄μ ΈμΌ ν©λλ€
- μ μ½λ μ€ “sam?.address.city” μ λ€μ μ΄ν΄λ³΄λ©΄, sam == nil μΌ κ²½μ° μλ¬κ° λμ§ μκ³ λ€ μ½λκ° μ€νλμ§ μμ΅λλ€. λ€λ₯Έ μΈμ΄μ nullμ .μΌλ‘ μ°Έμ‘°λ₯Ό νλ©΄ λ°λ‘ NullPointerException μλ¬κ° λ°μν©λλ€. λ°λΌμ Swiftμμμ nilμ λ©λͺ¨λ¦¬μ μ£Όμκ°μ΄ μμμ λνλ΄λ nullμ΄ μλλΌ κ°μ΄ μμμ λνλ΄λ κ°(μ€μ λ‘λ λ€μμ λ°°μΈ Enum)μ λλ€.
'Coding Test Practice in Swift' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
NS type (0) | 2023.12.22 |
---|---|
νλ ¬μ λ§μ (0) | 2023.12.22 |
λ¬Έμμ΄ λ€λ£¨κΈ° κΈ°λ³Έ (0) | 2023.12.06 |
λΆμ‘±ν κΈμ‘ κ³μ°νκΈ° (1) | 2023.12.05 |
μ½μμ κ°μμ λ§μ (1) | 2023.11.29 |