Focus On Develop ๐ŸคŸ๐ŸคŸ

[Swift] CaseIterable ๋ณธ๋ฌธ

iOS [Swift]/๊ธฐ์ดˆ๋ฅผ ํƒ„ํƒ„ํžˆ!

[Swift] CaseIterable

๋ˆ„๋ฆฌ๋‹ฌ์ดํ‹€ 2021. 2. 27. 22:18

์ฝ”๋“œ๋ฅผ ์งœ๋‹ค๋ณด๋ฉด 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
Comments