๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป/Swift

14. ์—ด๊ฑฐํ˜• - iOS ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์œ„ํ•œ ์Šค์œ„ํ”„ํŠธ ๊ธฐ์ดˆ

reujusong 2020. 6. 19. 14:24

 - ์—ด๊ฑฐํ˜•

 Swift ์—ด๊ฑฐํ˜•์€ ๋‹ค๋ฅธ ์–ธ์–ด์˜ ์—ด๊ฑฐํ˜•๊ณผ ๋งŽ์ด ๋‹ค๋ฅด๋‹ค. ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ์„ ์ง€๋‹ˆ๊ณ  ์žˆ์–ด ์ž˜ ์•Œ์•„๋‘๊ณ  ์‚ฌ์šฉํ•˜๋ฉด ์ข‹๋‹ค.

  • ์œ ์‚ฌํ•œ ์ข…๋ฅ˜์˜ ์—ฌ๋Ÿฌ ๊ฐ’์„ ํ•œ ๊ณณ์— ๋ชจ์•„์„œ ์ •์˜ํ•œ ๊ฒƒ์ด๋‹ค. ์˜ˆ) ์š”์ผ, ์›”, ๊ณ„์ ˆ ๋“ฑ
  • enum ์ž์ฒด๊ฐ€ ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…์œผ๋กœ, ๋Œ€๋ฌธ์ž ์นด๋ฉœ์ผ€์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฆ„์„ ์ •์˜ํ•œ๋‹ค.
  • ๊ฐ case๋Š” ์†Œ๋ฌธ์ž ์นด๋ฉœ์ผ€์ด์Šค๋กœ ์ •์˜ํ•œ๋‹ค.
  • ๊ฐ case๋Š” ๊ทธ ์ž์ฒด๊ฐ€ ๊ณ ์œ ์˜ ๊ฐ’์ด๋‹ค.(๊ฐ case์— ์ž๋™์œผ๋กœ ์ •์ˆ˜๊ฐ’์ด ํ• ๋‹น๋˜์ง€ ์•Š์Œ)
  • ๊ฐ case๋Š” ํ•œ ์ค„์— ๊ฐœ๋ณ„๋กœ๋„, ํ•œ ์ค„์— ์—ฌ๋Ÿฌ๊ฐœ๋„ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.
enum ์ด๋ฆ„ {
	case ์ด๋ฆ„1
	case ์ด๋ฆ„2
	case ์ด๋ฆ„3, ์ด๋ฆ„4, ์ด๋ฆ„5
	// ...
}

// ์˜ˆ์ œ
enum BoostCamp {
        case iosCamp
        case androidCamp
        case webCamp
}

 

 - ์—ด๊ฑฐํ˜• ์‚ฌ์šฉ

  • ํƒ€์ž…์ด ๋ช…ํ™•ํ•  ๊ฒฝ์šฐ, ์—ด๊ฑฐํ˜•์˜ ์ด๋ฆ„์„ ์ƒ๋žต ํ•  ์ˆ˜ ์žˆ๋‹ค. 
  • switch ๊ตฌ๋ฌธ์—์„œ ์‚ฌ์šฉํ•˜๋ฉด ์ข‹๋‹ค.

๋ชจ๋“  ์—ด๊ฑฐํ˜• ์ผ€์ด์Šค๋ฅผ ํฌํ•จํ•˜๋ฉด default๋ฅผ ์ž‘์„ฑํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.

 

 

 - rawValue (์›์‹œ๊ฐ’)

  • C ์–ธ์–ด์˜ enum ์ฒ˜๋Ÿผ ์ •์ˆ˜๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.
  • rawValue๋Š” case๋ณ„๋กœ ๊ฐ๊ฐ ๋‹ค๋ฅธ ๊ฐ’์„ ๊ฐ€์ ธ์•ผํ•œ๋‹ค.
  • ์ž๋™์œผ๋กœ 1์ด ์ฆ๊ฐ€๋œ ๊ฐ’์ด ํ• ๋‹น๋œ๋‹ค.
  • rawValue๋ฅผ ๋ฐ˜๋“œ์‹œ ์ง€๋‹ ํ•„์š”๊ฐ€ ์—†๋‹ค๋ฉด ๊ตณ์ด ๋งŒ๋“ค์ง€ ์•Š์•„๋„ ๋œ๋‹ค.

์ •์ˆ˜ ํƒ€์ž… ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, Hashable ํ”„๋กœํ† ์ฝœ์„ ๋”ฐ๋ฅด๋Š” ๋ชจ๋“  ํƒ€์ž…์„ ์›์‹œ๊ฐ’์˜ ํƒ€์ž…์œผ๋กœ ์ง€์ • ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

- ์›์‹œ๊ฐ’์„ ํ†ตํ•œ ์ดˆ๊ธฐํ™”

  • rawValue๋ฅผ ํ†ตํ•ด ์ดˆ๊ธฐํ™” ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • rawValue๊ฐ€ case์— ํ•ด๋‹นํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, rawValue๋ฅผ ํ†ตํ•ด ์ดˆ๊ธฐํ™” ํ•œ ์ธ์Šคํ„ด์Šค๋Š” ์˜ต์…”๋„ ํƒ€์ž…์ด๋‹ค.

 

 

- ๋ฉ”์„œ๋“œ 

Swift์˜ ์—ด๊ฑฐํ˜•์—๋Š” ๋ฉ”์„œ๋“œ๋„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.