์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- ๋ฐฑ์ค
- ๋ถํ ํ์
- ์ฝํ
- ์ด์งํ์
- ์์
- Queue
- ๋์ ํฉ
- ํ๋ก๊ทธ๋๋จธ์ค
- WebApp
- ์ ํด๋ฆฌ๋ ํธ์ ๋ฒ
- ๋นํธ์ฐ์ฐ์
- ๋ฐฑํธ๋ํน
- ์๊ณ ๋ฆฌ์ฆ
- ์ฝ๋ฉํ ์คํธ
- SwiftUI
- ๋ธ๋ฃจํธํฌ์ค ์๊ณ ๋ฆฌ์ฆ
- ios
- ๋ฌธ์์ด
- BFS
- ์คํ
- ๋ถํ ์ ๋ณต
- dfs
- Swift
- ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ
- ๋ธ๋ฃจํธํฌ์ค
- ๋ถํ ์ ๋ณต
- WebView
- dp
- Today
- Total
MUKER_DEV with iOS
swift / 5๊ฐ์ง์ Optional ์ฌ์ฉ๋ฒ ๋ณธ๋ฌธ
๋จผ์ Optional์ ๊ธฐ๋ณธ์ ์ธ ์ ์๋
"๊ฐ์ด ์์ ์๋ ์์ ์๋ ์๋ค" ๋ผ๊ณ ๋งํด์ฃผ๋ ๊ฒ์ด๋ค
Optional์ ์ฌ์ฉํจ์ผ๋ก์ nil์ด ์๋์ง ์๋์ง๋ฅผ ํ์ธํ๊ธฐ ๋๋ฌธ์
๊ฐ์ ํ์ดํธํ๊ฒ ๊ด๋ฆฌํด ์๋ฌ๋ฅผ ์ค์ฌ์ค ์ ์๋ค
๋ฐ์ Optional์ ์ฌ์ฉํ๋ 5๊ฐ์ง ๋ฐฉ๋ฒ์ด๋ค
1. Force Unwrapping
2. Cheak for nil value
3. Optional Binding
4. Nil Coalescing Operator
5. Optional Chaining
์ 5๊ฐ์ง ๋ฐฉ๋ฒ์ ์ฌ์ฉํด์ ์ต์ ๋์ ์ดํดํ๊ณ ์ฌ์ฉํด๋ณด์
์ผ๋จ ๊ฐ๋จํ๊ฒ ์ต์ ๋์ ์ฌ์ฉํด์ ๋ณ์๋ฅผ ๋ง๋ค์ด๋ณด์
let myOptional: String?
myOptional = "Muker"
let text: String = myOptional // ์๋ฌ๊ฐ ๋ธ. myOptional์ ์ต์
๋ํ์
์ด๊ธฐ ๋๋ฌธ
์๋ฌ๊ฐ ๋จ๋๊ฑด ํธ์ฌ๋ค ํธ์ฌ
์๋ Swift๋ ํ์ดํธํ๊ฒ ํ์ ์ ์ก์์ฃผ๊ธฐ ๋๋ฌธ์
์ต์ ๋์ ํ ๋นํจ์ผ๋ก์จ nil์ ๋ํ ์ปดํ์ผ์๋ฌ๋ฅผ ๋ง๋ค๊ณ , ๋ช ํํ ์์ธ์ฒ๋ฆฌ๊ฐ ๊ฐ์ ๋จ
๊ทธ๋์ ์ฑ์ ๋น๋ํ์๋ nil๋๋ฌธ์ ๋์ค๋ ๋ฌธ์ ๋ฅผ ์ฌ์ ์ ์ฐจ๋จํด์ฃผ๋ ๋ฐฑ์ ์ด ๋จ
์๋ฌดํผ ์ด๋ ๊ฒ ํ ๋นํ๊ณ ์ปดํ์ผ์๋ฌ๋ง ๋ง๋ค๊ณ ๋๋ด๋ฉด ์๋๋
์ 5๊ฐ์ง ๋ฐฉ๋ฒ์ ์ ์ฉํด์ ๋ฐ๋ฅด๊ฒ ์ฌ์ฉํด๋ณด์
1. Force Unwrapping
๋ ์ด ๋ณ์์ ํ์คํ๊ฒ ๊ฐ์ด ๋ค์ด๊ฐ๋ค! ๊ทธ๋์ ์์ ์ฅ์น ์์ด ์ฌ์ฉํด๋ ์๊ด์๋ค!
ํ ๋ ์ฌ์ฉํ๋๋ฐ, ๋น์ฐํ ๊ฐ์ ์ ์ธ ๊ธฐ๋ฅ์ ๊ถ์ฅ๋์ง ์๋๋ค
let myOptional: String?
myOptional = "Muker"
let text: String = myOptional!
์์ฃผ ๊ฐ๋จํ๊ฒ myOptional์ด text์ ํ ๋น๋ ๋ !๋ฅผ ๋ค์๋ค ์จ์ฃผ๋ฉด ๋
๋ง์ฝ myOptional์ด nil์ด๋ค? ๋ฐ๋ก ๋ฐํ์์ค๋ฅ ๋ฐ์!
๋๋ฒ์งธ ๋ฐฉ๋ฒ
2. Cheak for nil value
if๋ฌธ์ผ๋ก nil์ ์ฒดํฌํด์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์
let myOptional: String?
myOptional = "Muker"
if myOptional != nil {
let text: String = myOptional!
} else {
print("nil์
๋๋น")
}
1๋ฒ ๋ฐฉ๋ฒ์ธ ๊ฐ์ ์ธ๋ฉํ์๋ค ์กฐ๊ฑด๋ฌธ์ ํ์ฉํด nil๊ฐ์ผ๋ ๋น ์ ธ๋ ์ ์๊ฒํด์ ๋ฐํ์์๋ฌ๋ฅผ ๋ง์ ์ ์์!
ํ์ง๋ง ๋๋ฌด ๊ฐ๋ ์ฑ์ด ์์ข์
์ฌ์ง์ด ๊ฐ์ ์ธ๋ฉํ๋ ํญ์ ํด์ค์ผํจ
๊ทธ๋์ ์๊ธด ๊ธฐ๋ฅ์ด ๋ญ์ง๋ ๋ชฐ๋ผ๋ swift๋ฅผ ๊ณต๋ถํ ๋ ํ๋ฒ์ฏค ๋ค์ด๋ดค์ '์ต์ ๋ ๋ฐ์ธ๋ฉ' ์
3. Optional Binding
if let safeOptional = optional {
safeOptional
}
์ต์ ๋ ๋ฐ์ธ๋ฉ์ ๋์ฑ ๊ฐ๋จํด์ง
if let ์ ์ต์ ๋์ ๋ฐ์ธ๋ฉํ๊ฒ ๋จ
๊ทธ๋์ nil์ด ์๋๋ฉด optional ๊ฐ์ ๋ง๋ค์ด๋ ์์ safeOptional ์ ๋ฐ์ธ๋ฉ์ด ๋์ด
๊ดํธ ์์์ ์ต์ ๋์ด ๋ฒ๊ฒจ์ง safeOptional์ ์ธ ์ ์์!
๊ทธ๋์ ! ์์ด ์ฌ์ฉ ๊ฐ๋ฅํ๋ค~
let myOptional: String?
myOptional = "Muker"
if let safeOptional = myOptional {
let text: String = safeOptional
print(safeOptional) // ์ต์
๋ ์์ด ์ถ๋ ฅ
} else {
print("nil์
๋๋น")
}
์ด๋ฒ์๋ 4๋ฒ์งธ ์ฌ์ฉ๋ฒ nil ๋ณํฉ ์ฐ์ฐ์๋ฅผ ์์๋ณผ๊น!
4. Nil Coalescing Operator
์ด๋ฆ์์๋ ๋๊ปด์ง๋ค.
๋ณํฉ == ์ฝ๋๊ฐ ์ค์ด๋ ๋ค?
optional ?? defaultValue
์ด๊ฒ ๋ฌด์์ธ๊ฐ ํ๋ฏ
์ต์ ๋ ๊ฐ์ด nil์ด๋ฉด ?? ๋ค defaultValue์ ๊ฐ์ด ์ถ๋ ฅ๋๊ณ
๋ง์ฝ nil์ด ์๋๋ฉด ์ต์ ๋์ด ๋ฒ๊ฒจ์ ธ ์ฌ์ฉํ ์ ์๊ฒ ๋๋ค
let myOptional: String?
myOptional = nil
let text: String = myOptional ?? "i am the default value"
print(text) // "i am the dfault value"
ํ์คํ ๊ฐ๊ฒฐํด์ง๊ณ ๊น๋ํด์ก๋ค
๋ค์ฏ๋ฒ์งธ ์ต์ ๋ ์ฒด์ด๋์ ๊ตฌ์กฐ์ฒด๊ฐ ์ต์ ๋์ผ๋ ์ฐ์
5. Optional Chaining
struct MyOptional {
var property = 123
func method() {
print("๋๋ ๊ตฌ์กฐ์ฒด ๋ฉ์๋")
}
}
let myOptional: MyOptional? = MyOptional()
print(myOptional!.property) // ์๋ฌ
๊ตฌ์กฐ์ฒด MyOptional์ ๋ง๋ค๊ณ
myOptional์ ์ต์ ๋๋ก ์ด๊ธฐํ ์์ผ์ค๋ค์
ํ๋กํผํฐ๋ฅผ ํ๋ฆฐํธํ๋ฉด ์๋ฌ๊ฐ๋๋ค
์ด์ ๋ ์๋ค์ํผ ์ต์ ๋์ ํ ๋นํ๊ธฐ ๋๋ฌธ์ nil์ธ์ง ์๋์ง ํ์ธ์ ํด์ผํ๋ค
print(myOptional!.property)
๊ทธ๋ ๋ค๋ฉด ์ด๋ ๊ฒ ๊ฐ์ ์ ์ผ๋ก ์ธ๋ํํด๋ ์คํ์ด ์ ๋์ง๋ง
์์ ๋งํ๋ฏ์ด ์ข์ ๋ฐฉ๋ฒ์ด ์๋๋ค
์ต์ ๋์ฒด์ด๋์ ๊ฐ๋จํ๊ฒ ์ต์ ๋๋ค์ ๋ฌผ์ํ๋ฅผ ๋ถ์ฌ์ฃผ๋ฉด๋๋ค
print(myOptional?.property)
์ด๋ฐ์์ผ๋ก !๋ฅผ ?๋ก ๋ฐ๊ฟ์ฃผ๋ฉด ๋๋ค
์ ์ฒด์ด๋์ด๋
myOptional? ์์ nil์ด ์๋์ ํ์ธํ๋ฉด ์ฒด์ด๋ ํด์
๋ค์์๋ ํ๋กํผํฐ, ๋ฉ์๋์ ์์ ๋กญ๊ฒ ์ ๊ทผํ ์ ์๊ฒ ๋๋ค๋ ๋ป
struct MyOptional {
var property = 123
func method() {
print("๋๋ ๊ตฌ์กฐ์ฒด ๋ฉ์๋")
}
}
let myOptional: MyOptional?
myOptional = MyOptional()
myOptional?.property // 123
myOptional?.method() // ๋๋ ๊ตฌ์กฐ์ฒด ๋ฉ์๋
์ด๋ ๊ฒ ์ต์ ๋ ์ฌ์ฉ๋ฒ 5๊ฐ์ง๋ฅผ ๊ณต๋ถํด๋ดค๋ค~ ๋!
'๐ iOS ๊ฐ๋ฐ > Swift' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
swift / ํ๋ก์ ํธ์ Pod ์ค์น (0) | 2022.06.02 |
---|---|
[Swift / Cocoapods] m1๋งฅ๋ถ pod install error (0) | 2022.05.20 |
swift / ํด๋ก์ ๋ฅผ ์ ์ฐ๋๊ฐ?! ํด๋ก์ ๋ฅผ ์ดํดํด๋ณด์ (0) | 2022.05.12 |
swift ์์์ ๋ค๋ฃจ๊ธฐ (0) | 2022.02.05 |
Swift 13 ์์ imageLiteral ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ (0) | 2021.12.15 |