๊ฐœ๋ฐœ ์‹œํ–‰์ฐฉ์˜ค

[ Swift ์‹œํ–‰์ฐฉ์˜ค ] ๊ตฌ์กฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•ด ๋ชจ๋ธ์„ ๋ถ„๋ฆฌํ•˜๊ธฐ (ํด๋ž˜์Šค, ๊ตฌ์กฐ์ฒด, ์—ด๊ฑฐํ˜•)

Forest Yun 2025. 1. 3. 00:50
728x90

 

๋ฐฐ๊ฒฝ

์Šคํ† ๋ฆฌ๋ณด๋“œ๋กœ table view ํ™”๋ฉด์„ ๊ตฌ์„ฑํ•˜๋˜ ์ค‘ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ table view์— ๋“ค์–ด๊ฐˆ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ๊ตฌ์กฐ์ฒด๋กœ ๋งŒ๋“ค์–ด ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ชจ๋“  ์ฝ”๋“œ์—” ์ด์œ ๊ฐ€ ์žˆ์–ด์•ผ ํ•˜๊ณ  ์ƒ๊ฐํ•˜๋ฉฐ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‹ค์Šตํ•œ ์ฝ”๋“œ๋ฅผ ๋‘๊ณ  ์™œ ์ด๋ ‡๊ฒŒ ์ฝ”๋”ฉํ–ˆ์„๊นŒ ์ƒ๊ฐ์„ ํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค.

 

 

 

ํ™”๋ฉด ์ดํ•ด ๋ฐ ์ฝ”๋“œ ๋ณด๊ธฐ

ํœด๋Œ€ํฐ์˜ ์„ค์ • ํ™”๋ฉด์ฒ˜๋Ÿผ table view controller์— ๊ณ ์ •๋œ ๋ฐ์ดํ„ฐ ๋ชฉ๋ก์„ ์‚ฝ์ž…ํ•˜์—ฌ ๋ณด์—ฌ์ฃผ๋Š” ๊ฐ„๋‹จํ•œ ๊ตฌํ˜„์ž…๋‹ˆ๋‹ค.  3๊ฐœ์˜ ๋Œ€๋ถ„๋ฅ˜์™€ ๊ทธ ์•„๋ž˜ ์†Œ๋ถ„๋ฅ˜ title์ด ์žˆ์–ด ๊ฐ ์„น์…˜ ๋ณ„๋กœ ํ•ด๋‹นํ•˜๋Š” ํ•ญ๋ชฉ์„ ์‚ฝ์ž…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

import UIKit

class TableViewController: UITableViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
    }
}

//MARK: -  TableViewDelegate
extension TableViewController {
    override func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
        guard let section = Setting.Header(rawValue: section) else {
            print("Unknown Section")
            return nil
        }
        return section.title
    }
    
    override func numberOfSections(in tableView: UITableView) -> Int {
        return Setting.Header.allCases.count
    }
    
    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return Setting.samples[section].count
    }
    
    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        guard let cell = tableView.dequeueReusableCell(withIdentifier: "case-2-identifier") else { return UITableViewCell() }
        
        cell.textLabel?.text = Setting.samples[indexPath.section][indexPath.row].title
        return cell
    }
}


struct Setting {
    enum Header: Int, CaseIterable {
        case full, personal, others
        
        var title: String {
            switch self {
            case .full:
                return "์ „์ฒด ์„ค์ •"
            case .personal:
                return "๊ฐœ์ธ ์„ค์ •"
            case .others:
                return "๊ธฐํƒ€"
            }
        }
    }
    
    let header: Header
    let title: String
    
    static let samples = [ [Setting(header: .full, title: "๊ณต์ง€์‚ฌํ•ญ"),
                           Setting(header: .full, title: "์‹คํ—˜์‹ค"),
                           Setting(header: .full, title: "๋ฒ„์ „ ์ •๋ณด")],
                           
                           [Setting(header: .personal, title: "๊ฐœ์ธ"),
                           Setting(header: .personal, title: "์•Œ๋ฆผ")],
                           
                           [Setting(header: .others, title: "๊ณ ๊ฐ์„ผํ„ฐ")]]
}

 

 

 

 

 

 

์™œ ์ด๋ ‡๊ฒŒ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ–ˆ์„๊นŒ?

1. ์™œ ๊ตฌ์กฐ์ฒด๋กœ ํ–ˆ๋‚˜์š”?

์‚ฌ์šฉ ์ด์œ ์— ์•ž์„œ ํด๋ž˜์Šค์™€ ๊ตฌ์กฐ์ฒด๋ฅผ ๋น„๊ตํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. 

ํด๋ž˜์Šค๋Š” ์ฐธ์กฐ ํƒ€์ž…์œผ๋กœ, ํž™ ๋ฉ”๋ชจ๋ฆฌ์— ์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์„ฑ๋˜์–ด ํ”„๋กœํผํ‹ฐ์—์„œ ํ•ด๋‹น ์ธ์Šคํ„ด์Šค๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํ˜•ํƒœ๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋Š” ๋ณ€์ˆ˜/์ƒ์ˆ˜๋งŒ ์žˆ๋‹ค๋ฉด ARC์— ์˜ํ•ด ๋ฉ”๋ชจ๋ฆฌ ์ƒ์—์„œ ์˜ค๋ž˜ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•  ํ•„์š”๊ฐ€ ์žˆ์„ ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋”๋ถˆ์–ด ์ƒ์† ๊ตฌ์กฐ๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ถ€๋ชจ์˜ ๋ฉค๋ฒ„(๊ธฐ๋Šฅ)์„ ์ด์–ด ๋ฐ›๊ฑฐ๋‚˜ ๊ทธ ๊ธฐ๋Šฅ์„ ํ™•์žฅํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค๋ฉด ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 ์ด์™€๋Š” ๋ฐ˜๋Œ€๋กœ ๊ตฌ์กฐ์ฒด๋Š” ๊ฐ’ ํƒ€์ž…์œผ๋กœ, ์Šคํƒ ๋ฉ”๋ชจ๋ฆฌ์— ์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์„ฑ๋˜์–ด ๋‹ค๋ฅธ ๋ณ€์ˆ˜์— ํ• ๋‹น ์‹œ ๊ทธ ์ธ์Šคํ„ด์Šค๊ฐ€ ๋ณต์‚ฌ๋˜์–ด ์ €์žฅ๋˜๋Š” ํ˜•ํƒœ๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ํ•ด๋‹นํ•˜๋Š” ์˜์—ญ์˜ ์ž‘์—…์ด ๋๋‚˜๋ฉด ์Šคํƒ ํ”„๋ ˆ์ž„์€ ์ œ๊ฑฐ๋˜๋Š”๋ฐ, ์ด์™€ ํ•จ๊ป˜ ์Šคํƒ์— ์ƒ์„ฑ๋œ ๊ตฌ์กฐ์ฒด์˜ ์ธ์Šคํ„ด์Šค๋„ ํ•จ๊ป˜ ์ œ๊ฑฐ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํด๋ž˜์Šค์— ๋น„ํ•ด ์ธ์Šคํ„ด์Šค๊ฐ€ ๋น ๋ฅด๊ฒŒ ์ƒ์„ฑ๋˜๊ณ  ๋”ฐ๋กœ ์ธ์Šคํ„ด์Šค๋ฅผ ๊ด€๋ฆฌํ•ด์ฃผ์ง€ ์•Š์•„๋„ ๋˜์ง€๋งŒ ์˜ค๋ž˜ ์ง€์†ํ•˜๋ฉฐ ์ƒํƒœ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

 Setting ๊ตฌ์กฐ์˜ ๊ฒฝ์šฐ ๊ตฌ์กฐ์ฒด๊ฐ€ ์ ํ•ฉํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด Setting์€ ์„ค์ • ํ™”๋ฉด์˜ ๋ฐ์ดํ„ฐ ๋ชฉ๋ก์˜ ์•„์ดํ…œ์„ ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ๊ตฌ์กฐ๋กœ, ์ธ์Šคํ„ด์Šค๋ฅผ ์œ ์ง€ํ•ด์„œ ์˜ค๋ž˜ ์ƒํƒœ๋ฅผ ํ™•์ธํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋”ํ•ด ์ƒ์†์„ ํ†ตํ•ด ๊ธฐ๋Šฅ์„ ํ™•์žฅํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ Setting์€ ์ƒ์„ฑ์ด ๋น ๋ฅด๊ณ  ์ƒ๋ช…์ฃผ๊ธฐ๋ฅผ ๊ด€๋ฆฌํ•  ํ•„์š”๊ฐ€ ์—†๋Š” ๊ตฌ์กฐ์ฒด๊ฐ€ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.

 

 

 2. ์™œ ์—ด๊ฑฐํ˜•์„ ์‚ฌ์šฉํ–ˆ๋‚˜์š”?

  ํ—ค๋”์˜ ์ข…๋ฅ˜๋Š” 3๊ฐ€์ง€๋กœ ๊ณ ์ •์ ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฐ ํ—ค๋”์— ๋”ฐ๋ฅธ ์†Œ๋ถ„๋ฅ˜์˜ ํ•ญ๋ชฉ๋“ค์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ฐ ํ—ค๋”๋Š” ๊ตฌ๋ถ„์ด ํ™•์‹คํ•ด์•ผํ•˜๋ฉฐ ์ด๋Ÿฌํ•œ ๊ตฌ๋ถ„์€ ๊ธฐ๋Šฅ ๊ตฌํ˜„ ๋•Œ ์ž์ฃผ ์‚ฌ์šฉ๋˜์–ด ๊ตฌํ˜„์ด ๊ฐ„ํŽธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋Šฅ ๊ตฌํ˜„ ๋•Œ๋งˆ๋‹ค String์„ ๋น„๊ตํ•ด ์ผ์น˜ํ•˜๋Š” ํ—ค๋”๋ฅผ ์ฐพ์•„ ํ•ด๋‹นํ•˜๋Š” ํ•ญ๋ชฉ์„ ๊ธฐ์ž…ํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ์ด๋Ÿฌํ•œ ๋ฐฉ์‹์€ ์˜คํƒˆ์ž๋ฅผ ์ฃผ์˜ํ•ด์•ผํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ switch๋ฌธ๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•ด์„œ ๋ถ„๊ธฐ์ฒ˜๋ฆฌ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ํ•  ์ˆ˜ ์žˆ๋Š” ์—ด๊ฑฐํ˜•์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

 

 

 3. ์™œ ์›์‹œ๊ฐ’ ํƒ€์ž…์œผ๋กœ String์ด ์•„๋‹Œ Int๋ฅผ ์‚ฌ์šฉํ–ˆ๋‚˜์š”? ๊ทธ๋ฆฌ๊ณ  ์™œ String์„ title์ด๋ผ๋Š” ํ”„๋กœํผํ‹ฐ๋กœ ๋”ฐ๋กœ ๊ตฌ๋ถ„ํ•ด ์‚ฌ์šฉํ•˜๋‚˜์š”?

 ๋ชฉ์ ์ด ๋ช…ํ™•ํ•œ ๋ณ€์ˆ˜/์ƒ์ˆ˜๋ช…์€ ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ์„ ๋†’์ด๊ณ  ํ˜‘์—… ์‹œ ์ฝ”๋“œ์˜ ์ดํ•ด๋„ ํ–ฅ์ƒ์— ๋„์›€์ด ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ช…์‹œ์ ์ธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์™€ ๊ฐ™์€ ์ด์œ ๋กœ ์—ด๊ฑฐํ˜•์˜ ์›์‹œ๊ฐ’ ํƒ€์ž…์€ Int๋กœ ์‚ฌ์šฉํ–ˆ์œผ๋ฉฐ, title ์—ฐ์‚ฐ ํ”„๋กœํผํ‹ฐ๋ฅผ ์ƒ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. ๋จผ์ € ์—ด๊ฑฐํ˜•์˜ ์›์‹œ๊ฐ’์„ Int ํƒ€์ž…์œผ๋กœ ์„ ์–ธํ•˜๋ฉด, ์—ด๊ฑฐํ˜• ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ ์‹œ rawValue๋กœ Int๊ฐ’์„ ๋„ฃ์„ ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋ฉฐ case ์„ ์–ธ์˜ ์ˆœ์„œ๋Œ€๋กœ ํ•ด๋‹นํ•˜๋Š” case๋ฅผ ๊ฐ€์ง„ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฐฉ์‹์„ ํ™œ์šฉํ•  ๊ฒฝ์šฐ, table view์˜ section ๋ณ„ ๋‹ค๋ฅธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด์•ผํ•  ๋•Œ switch๋ฌธ๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฉด ๋ช…์‹œ์ ์ธ ๋ถ„๊ธฐ ์ฒ˜๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”๋ถˆ์–ด title ์—ฐ์‚ฐ ํ”„๋กœํผํ‹ฐ์˜ ๊ฒฝ์šฐ ์›์‹œ๊ฐ’์„ String์œผ๋กœ ํ•ด rawValue ํ”„๋กœํผํ‹ฐ๋กœ ์‚ฌ์šฉํ•ด๋„ ๋˜์ง€๋งŒ ๊ทธ rawValue๊ฐ€ ๋ฌด์—‡์„ ๋‹ด์€ ํ”„๋กœํผํ‹ฐ์ธ์ง€ ๋ช…ํ™•ํ•˜์ง€ ์•Š๋‹ค๊ณ  ์ƒ๊ฐํ•ด title์ด๋ผ๋Š” ํ”„๋กœํผํ‹ฐ๋ฅผ ๋”ฐ๋กœ ์ƒ์„ฑํ•ด ๊ทธ ์‚ฌ์šฉ ์˜๋ฏธ๋ฅผ ๋ช…ํ™•ํžˆ ํ•˜๊ณ ์ž ํ–ˆ์Šต๋‹ˆ๋‹ค.

 

 

 4. ์™œ CaseIterable์„ ์‚ฌ์šฉํ–ˆ๋‚˜์š”?

 numberOfSections์—์„œ section์˜ ๊ฐœ์ˆ˜๋ฅผ ์ „๋‹ฌํ•ด์•ผํ•˜๋Š”๋ฐ, ๋”ฐ๋กœ ๊ฐ’์„ ๊ตฌ์„ฑํ•ด ์ „๋‹ฌํ•˜๋ฉด ์ดํ›„ section ์ถ”๊ฐ€ ๋˜๋Š” ์ œ๊ฑฐ ์‹œ ์ˆ˜์ •ํ•  ๋ถ€๋ถ„์ด ๋งŽ์•„์ง€๊ฒŒ ๋•Œ๋ฌธ์— ํšจ์œจ์ ์ธ ์ˆ˜์ •์„ ์œ„ํ•ด Header์— CaseIterable๋ฅผ ์ฑ„ํƒํ•ด ๋ฐฐ์—ด๋กœ Header์˜ ๋ชจ๋“  ํ•ญ๋ชฉ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.

 

 

 

 5. ์™œ samples ๋ฐ์ดํ„ฐ ๋ชฉ๋ก์„ Setting์— ๋‘์—ˆ๋‚˜์š”? ๊ทธ๋ฆฌ๊ณ  static ํ‚ค์›Œ๋“œ๋ฅผ ๋ถ™์ธ ์ด์œ ๊ฐ€ ๋ฌด์—‡์ธ๊ฐ€์š”?

 ํ•ด๋‹น ํ™”๋ฉด์€ ์„ค์ •ํ™”๋ฉด์œผ๋กœ, ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ์ด ์ผ์–ด๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์•ž์œผ๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ์ถ”๊ฐ€, ์ œ๊ฑฐ๋  ๊ฐ€๋Šฅ์„ฑ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— view controller์— ๋‘์ง€ ์•Š๊ณ  Header์— ๋‘์—ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋ชจ๋“  ์ธ์Šคํ„ด์Šค์—์„œ samples๊ฐ€ ๋™์ผํ•  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ๋งˆ๋‹ค ํ•ด๋‹น ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์— samples ๊ฐ€ ์ƒ๊ธฐ๋Š” ๊ฒƒ์€ ํšจ์œจ์ ์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ static ํ‚ค์›Œ๋“œ ํ†ตํ•ด samples๋ฅผ ํƒ€์ž… ํ”„๋กœํผํ‹ฐ๋กœ ์„ ์–ธํ•˜๋ฉด, ํƒ€์ž… ์˜์—ญ์— ํ•˜๋‚˜์˜ samples๋งŒ ์กด์žฌํ•˜๊ฒŒ ๋˜๊ณ  ์ด๋ฅผ ๊ฐ€์ ธ๋‹ค ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฏ€๋กœ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

 

 

 

 

์ •๋ฆฌ

Setting ๊ตฌ์กฐ๋Š” table view์˜ ์•„์ดํ…œ์„ ์œ„ํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ธฐ๋Šฅ ํ™•์žฅ์„ ์œ„ํ•œ ์ƒ์†๊ณผ ์ง€์†์ ์ธ ์ƒํƒœ ํ™•์ธ ์ž‘์—…์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ํด๋ž˜์Šค์™€ ๋น„๊ตํ•ด ์ธ์Šคํ„ด์Šคํ™”๊ฐ€ ๋น ๋ฅด๊ณ  ์ƒ๋ช…์ฃผ๊ธฐ๋ฅผ ๊ด€๋ฆฌํ•˜์ง€ ์•Š์•„๋„ ๋˜๊ธฐ์— ๊ตฌ์กฐ์ฒด๊ฐ€ ์ ํ•ฉํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. 

์„ค์ • ํ™”๋ฉด์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋Œ€๋ถ„๋ฅ˜์ธ header๋Š” ์•„๋ž˜ ์†Œ๋ถ„๋ฅ˜๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด section ๋ณ„๋กœ ํ•ด๋‹นํ•˜๋Š” ํ•ญ๋ชฉ์„ ์ฐพ์•„ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ช…ํ™•ํ•˜๊ณ  ํšจ์œจ์ ์ธ ๋ถ„๊ธฐ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด ์—ด๊ฑฐํ˜•์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ๋ชจ๋“  ๋Œ€๋ถ„๋ฅ˜์—๋Š” '์ „์ฒด ์„ค์ •'๊ณผ ๊ฐ™์ด ์ œ๋ชฉ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”๋ฐ, title ์—ฐ์‚ฐ ํ”„๋กœํผํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•ด ๋ช…์‹œ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ณ ์ž ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ดํ›„ ๋Œ€๋ถ„๋ฅ˜์˜ ์ถ”๊ฐ€/์ œ๊ฑฐ ์‹œ ๋ฐ์ดํ„ฐ ์ˆ˜์ •์„ ์šฉ์ดํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด, CaseIterable์„ ์ฑ„ํƒํ•ด Header์˜ ๋ชจ๋“  case๋ฅผ ๋ฐฐ์—ด๋กœ ๋ฐ›์•„ section ๊ตฌ์„ฑ ์‹œ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ ์„ค์ • ํ™”๋ฉด์— ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ ๋ชฉ๋ก์€ ๊ณ ์ •๋˜์–ด์žˆ๊ณ , ์–ด๋–ค Header ์ธ์Šคํ„ด์Šค์—์„œ๋„ ๋ฐ์ดํ„ฐ๋Š” ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์„ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— Header ํƒ€์ž…์— ํƒ€์ž… ํ”„๋กœํผํ‹ฐ๋กœ samples ์ €์žฅ ํ”„๋กœํผํ‹ฐ๋ฅผ ๋งŒ๋“ค์–ด ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

 

 

 

 

์†Œ๊ฐ

ํ•ญ์ƒ ๋ฐฐ์šฐ๋Š”๊ฑด ๋Š˜์–ด๊ฐ€๋Š”๋ฐ ๋ญ”๊ฐ€๋ฅผ ์„ค๋ช…ํ•˜๊ณ ์ž ํ•˜๋ฉด ๋งŽ์ด ์–ด๋ ค์› ์Šต๋‹ˆ๋‹ค. ์—ญ์‹œ ๊ณต๋ถ€์—์„œ ์ค‘์š”ํ•œ ๊ฒƒ์€ ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ์ง์ ‘ ์ ์šฉํ•˜๊ณ  ์ •๋ฆฌํ•ด๋ณด๋ฉฐ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์„ ๋•Œ๊นŒ์ง€ ์—ฐ์Šตํ•˜๊ธฐ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํ•ญ์ƒ ๋ชจ๋ธ์„ ๋งŒ๋“ค ๋•Œ๋Š” ๋ชจ๋‘๊ฐ€ ๊ทธ๋Ÿฌํ•˜๋“ฏ ํฐ ๊ณ ๋ฏผ์—†์ด ๊ตฌ์กฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๊ณค ํ–ˆ๋Š”๋ฐ, ์•ž์œผ๋กœ๋Š” ์˜ค๋Š˜ ์ •๋ฆฌํ–ˆ๋˜ ๋‚ด์šฉ์„ ์†์œผ๋กœ ํ•œ ๋ฒˆ์”ฉ ๋˜๋‡Œ์ด๋ฉฐ ๋งŒ๋“ค์–ด์•ผ๊ฒ ์Šต๋‹ˆ๋‹ค. 

728x90