Skip to content

iyeahh/NoDamHaJang-iOS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

33 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿ—“ ๋…ธ๋‹ดํ•˜์žฅ (Let's quit smoking)

๐Ÿ™…๐Ÿป ๋‹จ๋ฒˆ์— ๊ธˆ์—ฐ์ด ํž˜๋“ค ๋•Œ ๋ชฉํ‘œ ํก์—ฐ ํšŸ์ˆ˜๋ฅผ ์ค„์—ฌ ๊ธˆ์—ฐ์„ ๋„์™€์ฃผ๋Š” ์•ฑ

ํ”„๋กœ์ ํŠธ ๊ธฐ๊ฐ„: 2024๋…„ 9์›” 19์ผ โ†’ 2024๋…„ 9์›” 28์ผ (10์ผ)
์ธ์›: ๊ธฐํš & ๋””์ž์ธ & ๊ฐœ๋ฐœ ์ด 1๋ช…
์ตœ์†Œ ๋ฒ„์ „: iOS 16+

๐Ÿง ํ•ต์‹ฌ ๊ธฐ๋Šฅ

  • ํ•˜๋ฃจ์˜ ๋ชฉํ‘œ ํก์—ฐ ํšŸ์ˆ˜ ์„ค์ •
  • ์‹ค์ œ ํก์—ฐ ํšŸ์ˆ˜ ์ฒดํฌ
  • ์บ˜๋ฆฐ๋”, ์ฐจํŠธ๋กœ ํก์—ฐ ํšŸ์ˆ˜ ์ถ”์ด ํ™•์ธ
  • ๊ธˆ์—ฐ ๊ด€๋ จ ๊ธฐ์‚ฌ ํ‘œ์‹œ
  • ๋งค์ผ ๊ธˆ์—ฐ ๋…๋ ค ์•Œ๋ฆผ
  • ์˜์–ด ๋Œ€์‘

๐Ÿค“ ๊ธฐ์ˆ  ์Šคํƒ

  • SwiftUI
  • MVVM - InOut ํŒจํ„ด, Combine
  • LinkPresentation
  • Swift Charts

๐Ÿ“š ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

  • Alamofire
  • RealmSwift
  • FSCalendar

๐Ÿ’ก ๋ฌธ์ œ ํ•ด๊ฒฐ

โ“ ํ† ํ”ฝ

ViewModel์—์„œ enum์œผ๋กœ Action ๋ถ„๋ฆฌ

โ• ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

๐Ÿ’กย ๋ฌธ์ œ ์ƒํ™ฉ:ย ์ฝ”๋“œ์˜ ํ™•์žฅ์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด enum์œผ๋กœ Action ๋ถ„๋ฆฌ

  • enum์— ์ƒˆ๋กœ์šด ์ผ€์ด์Šค๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ƒˆ๋กœ์šด ์•ก์…˜์„ ์ถ”๊ฐ€ํ•˜๊ธฐ ์‰ฌ์›€
  • ๋ชจ๋“  ์•ก์…˜์„ ํ•˜๋‚˜์˜ ์—ด๊ฑฐํ˜•์œผ๋กœ ๊ด€๋ฆฌํ•˜์—ฌ, ์•ก์…˜ ์ฒ˜๋ฆฌ์˜ ํ๋ฆ„์„ ๋ช…ํ™•ํ•˜๊ฒŒ ์œ ์ง€

๊ตฌํ˜„๋ถ€

extension HomeViewModel {
    enum Action {
        case addSmokeButtonTapped
        case viewOnTask
    }

    func action(_ action: Action) {
        switch action {
        case .viewOnTask:
            input.viewOnTask.send(())
        case .addSmokeButtonTapped:
            input.addSmokeButtonTapped.send(())
        }
    }
}

์‹คํ–‰๋ถ€

viewModel.action(.viewOnTask)
viewModel.action(.addSmokeButtonTapped)

โ“ ํ† ํ”ฝ

ํ•˜์œ„ View์— ViewModel์„ ์ „๋‹ฌํ•˜์—ฌ ์ƒ์œ„ View ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ

โ• ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

๐Ÿ’กย ๋ฌธ์ œ ์ƒํ™ฉ: ํ•˜์œ„ ๋ทฐ์˜ ๋™์ž‘ ๋ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์œ„ ๋ทฐ์— ์ „๋‹ฌํ•˜์—ฌ ์ƒ์œ„ ๋ทฐ์˜ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•˜๋ ค ํ–ˆ์œผ๋‚˜, ๊ฐ ๋ทฐ์— ๋ณ„๋„์˜ ViewModel์„ ์ƒ์„ฑํ•ด ์ฃผ์ž…ํ•˜๋‹ˆ ์ƒ์œ„ ๋ทฐ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฐฑ์‹ ๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ ๋ฐœ์ƒ

  • ์ƒ์œ„ ๋ทฐ์˜ ViewModel์„ ํ•˜์œ„ ๋ทฐ์—๋„ ์ฃผ์ž…ํ•˜์—ฌ ๊ณต์œ ๋œ ViewModel์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜์œ„ ๋ทฐ์˜ ์ƒํƒœ ๋ฐ ์ด๋ฒคํŠธ๊ฐ€ ์ƒ์œ„ ๋ทฐ์— ์ „๋‹ฌ๋  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌ์„ฑ
  • Combine ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ํ•˜์œ„ ๋ทฐ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์ƒ์œ„ ๋ทฐ์— ๋ฐ˜์˜๋˜๋„๋ก ํ•จ

โ“ ํ† ํ”ฝ

LinkPresentation ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ํ™œ์šฉํ•œ URL Link Preview๋กœ ๋ฐ์ดํ„ฐ ํ‘œ์‹œ

โ• ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

๐Ÿ’กย ๋ฌธ์ œ ์ƒํ™ฉ: ๊ธˆ์—ฐ ๊ด€๋ จ ๊ธฐ์‚ฌ์˜ URL์„ ์ œ๊ณตํ•  ๋•Œ, ํ•ด๋‹น ๊ธฐ์‚ฌ์˜ ์ด๋ฏธ์ง€์™€ ์ œ๋ชฉ์„ ํฌํ•จํ•œ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ๊ตฌํ˜„ํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ

  • LPMetadataProvider๋ฅผ ํ†ตํ•ด URL์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ(์ด๋ฏธ์ง€, ์ œ๋ชฉ ๋“ฑ)๋ฅผ ๋น„๋™๊ธฐ์ ์œผ๋กœ ๊ฐ€์ ธ์˜ค๊ณ , ์ด๋ฅผ LPLinkView๋กœ ์‹œ๊ฐํ™”ํ•˜์—ฌ ๋งํฌ์˜ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ์ œ๊ณต
  • ๊ธˆ์—ฐ ๊ด€๋ จ ๊ธฐ์‚ฌ์˜ ์ด๋ฏธ์ง€์™€ ์ œ๋ชฉ์„ ์‚ฌ์šฉ์ž๊ฐ€ ์ง๊ด€์ ์œผ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Œ

โ“ ํ† ํ”ฝ

Localization์„ ์œ„ํ•œ ์˜์–ด ์ง€์›

โ• ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

๐Ÿ’กย ๋ฌธ์ œ ์ƒํ™ฉ: ๊ธ€๋กœ๋ฒŒ ์‚ฌ์šฉ์ž๋“ค์„ ์œ„ํ•œ ๋‹ค๊ตญ์–ด ์ง€์› ํ•„์š”

  • String Catalog๋ฅผ ํ™œ์šฉํ•˜์—ฌ Localization์„ ๊ตฌํ˜„, ํ•œ๊ตญ์–ด์™€ ์˜์–ด ๋Œ€์‘
  • ์•ฑ ๋‚ด์—์„œ ์ž๋™์œผ๋กœ ์–ธ์–ด ์„ ํƒ์ด ์ด๋ฃจ์–ด์ง€๋ฉฐ ์‚ฌ์šฉ์ž ์–ธ์–ด ์„ค์ •์— ๋งž์ถ˜ ๋™์  ํ…์ŠคํŠธ ๋ณ€ํ™˜์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ๊ตฌ์„ฑ
  • Key Mapping์„ ํ†ตํ•ด ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ๋†’์ด๊ณ  ์ผ๊ด€๋œ ์–ธ์–ด ๋ฆฌ์†Œ์Šค๋ฅผ ๊ด€๋ฆฌ

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2024-10-01 แ„‹แ…ฉแ„’แ…ฎ 1 26 18

About

๐Ÿ™…๐Ÿป ๋‹จ๋ฒˆ์— ๊ธˆ์—ฐ์ด ํž˜๋“ค ๋•Œ ๋ชฉํ‘œ ํก์—ฐ ํšŸ์ˆ˜๋ฅผ ์ค„์—ฌ ๊ธˆ์—ฐ์„ ๋„์™€์ฃผ๋Š” ์•ฑ

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages