์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- Mac
- Figma
- Reduce
- ํ๋ก๊ทธ๋๋จธ์ค
- ExpressJS
- mongoose
- MongoDB
- nodejs
- ios
- Decodable
- AVAudioPlayer
- String.Index
- ์ฑ๋ง๋ค๊ธฐ
- Encodable
- UIRefreshController
- CRUD
- RxSwift
- ์๊ณ ๋ฆฌ์ฆ
- DispatchQueue
- components
- ์ง๋ฒ๋ณํ
- ์ฑ๋์์ธ
- Firestore CRUD
- Firestore
- SWiFT
- Core Data
- Codable
- Filter
- Cloud Firestore
- map
- Today
- Total
Focus On Develop ๐ค๐ค
[Swift] CaseIterable ๋ณธ๋ฌธ
์ฝ๋๋ฅผ ์ง๋ค๋ณด๋ฉด enum ํ์ ์ผ๋ก ์ด๋ค ์ข ๋ฅ์ ์ผ์ด์ค๋ฅผ ๋์ดํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ฃ ~?
์๋ฅผ ๋ค๋ฉด ์ด๋ฐ์์ผ๋ก์!
enum Country {
case korea
case swiss
case france
case england
}
๊ทผ๋ฐ ์ด๋ ๊ฒ ์ผ์ด์ค๋ ์์ฑํด๋จ๋๋ฐ, ์ฐ๋ฆฌ๋ ์ ์ผ์ด์ค์ ๋ญ๊ฐ ๋ญ๊ฐ ์๋์ง๋ ๋ชฐ๋ผ์
enum Country {
case korea
case swiss
case france
case england
static var allCountry: [Country] {
return [.korea, .swiss, .france, .england]
}
}
์ด๋ ๊ฒ property๋ฅผ ์์๋ก ์์ฑํด์ค์ผ ํ์ฃ ๐ญ
๊ทผ๋ฐ Swift 4.2๋ถํฐ๋ CaseIterable์ด๋ผ๋ ํ๋กํ ์ฝ์ ์ ๊ณตํด์ฃผ๋ฉด์, ์ ๋ฐ ์ง(?)์ ํ ํ์๊ฐ ์์ต๋๋ค!!
๊ทธ๋ผ CaseIterable ์ด๊ฒ ๋ญ์ง~~~??
"์ด๋ค ์ปฌ๋ ์ ์ ๋ชจ๋ ๊ฐ๋ค์ ์ ๊ณตํ๋ ํ์ "์ ํ๋กํ ์ฝ ์ด๋ผ๊ณ ํ๋ค์!!
์ฆ, ์์์ ์๋ฅผ ๋ Country๋ผ๋ ์ปฌ๋ ์ ์์ ๋ชจ๋ ๊ฐ(๋๋ผ๋ค)์ ์ ๊ณตํด์ฃผ๋ ํ๋กํ ์ฝ ์ด๋์.
๊ทธ๋ผ ์๊น ๋ง๋ค์๋ Country๊ฐ ์ด ํ๋กํ ์ฝ์ ์ฑํํ๋๋ก ํ ๊ฒ์!
enum Country: CaseIterable {
case korea
case swiss
case france
case england
}
์ด๋ ๊ฒ CaseIterable ํ๋กํ ์ฝ์ ์ฑํํ๋ฉด, ์ฐ๋ฆฌ๋ allCases๋ผ๋ ํ๋กํผํฐ๋ฅผ ํตํด ๋ชจ๋ ์ผ์ด์ค์ ๊ฐ์ ๊ฐ์ ธ์ฌ ์ ์์ด์!
๋ชจ๋ ์ผ์ด์ค์ ๊ฐ์ ๊ฐ์ ธ์ฌ ์ ์๊ฒ ๋์, ์ฝ๋๋ฅผ ์ง๋ค๊ฐ ํ์ฌ๋ ์ผ์ด์ค๋ฅผ ๋๋ฝํ ์ผ์ด ์์ด์ก์ด์ ๐
์คํธ~ Countryํ์ ์ ๋ฐฐ์ด์ด๋ค์!!
let countries = Country.allCases
print(countries)
ํ๋ฒ ์ถ๋ ฅํด๋ณด๋, ์ฉ ๋ณด๊ธฐ์ข์ ํฌ๋งท์ ์๋์ง๋ง Country๊ฐ ๊ฐ์ง๊ณ ์๋ ๋ชจ๋ ์ผ์ด์ค๋ฅผ ๊ฐ์ง๊ณ ์๋ค์!
for country in countries {
if country == .korea {
print(country) // "korea"
}
}
Arrayํ์ ์ด๋๊น ์ด๋ ๊ฒ ๋ฐ๋ก for๋ฌธ์ ํตํด์ ๋ญ๊ฐ ๋ก์ง์ ๋ฃ์ด์ ํ์ฉ๋ ๊ฐ๋ฅํด์!
์กฐ๊ธ ์ด์๊ฒ Stringํ์ ์ ๋ฐฐ์ด๋ก ๋ณํ๋ ๊ฐ๋ฅํ๊ตฌ์~~
let list = countries.map { "\($0)" }
print(list) // ["korea", "swiss", "france", "england"]
extension์ ํตํด ๋ค๋ฅธ property๋ฅผ ๊น๋ํ๊ฒ ์ ์ํด์ค ์๋ ์์ด์~~
extension Country {
var continent: String {
switch self {
case .korea:
return "Asia"
case .swiss, .england, .france:
return "Europe"
}
}
}
์ถ๊ฐ๋ก ์ ์ํด์ค ๊ฒ๋ for๋ฌธ์ ํตํด ํ๋ฒ ํ์๋ ํด๋ณด๊ณ ์!
for country in countries {
if country.continent == "Europe" {
print(country)
}
}
/*
swiss
france
england
*/
์ฌ์ฉ์ ์ด๋ ๊ฒ ๊ฐ๋จํ์ง๋ง ํจ๊ณผ๋ ์ข์ ๐ CaseIterable์ ๋ํด์ ๊ฐ๋ตํ๊ฒ ์์๋ณด์์ต๋๋ค~!!
์ค๋๋ ๋๊ตฐ๊ฐ์๊ฒ ๋์์ด ๋์๊ธธ ๋ฐ๋์ ๐
'iOS [Swift] > ๊ธฐ์ด๋ฅผ ํํํ!' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Swift] FileManager (0) | 2021.03.02 |
---|---|
[Swift] Audio Recording (0) | 2021.03.01 |
[Swift] typealias (0) | 2021.02.26 |
[Swift] Codable (0) | 2021.02.26 |
[Swift] CodingKey (0) | 2021.02.26 |