์ด๋ฒ ํ๋ก์ ํธ QuickKick์ ๋น ๋ฅด๊ฒ ํฅ๋ณด๋๋ฅผ ์ฐพ๊ณ ๊ด๋ฆฌํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ๋ ๊ฒ์ด ๋ชฉํ์์ต๋๋ค. ํ์ ๋ชจ๋๊ฐ ํ์ ํ๋ฉฐ ๊ฐ๊ฐ์ ์ญํ ์ ๋งก์ ํ์ ๊ธฐ๋ฅ ๊ตฌํ ๋ฐ ์ถ๊ฐ์ ์ธ ๊ธฐ๋ฅ ๊ฐ์ ์ ํ์ผ์ต๋๋ค. ๋ฐ์ดํฐ ๊ด๋ฆฌ๋ Core Data์ UserDefaults๋ฅผ ํ์ฉํ์ฌ, ํฅ๋ณด๋ ๋ฐ์ดํฐ์ ์ฌ์ฉ์ ์ค์ ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ์ ์ฅํ๊ณ ๊ด๋ฆฌํ ์ ์๋๋ก ์ค๊ณํ์ต๋๋ค.
iOS ๊ฐ๋ฐ ํ๊ฒฝ:
Swift: ํ๋ก์ ํธ ์ ๋ฐ์ ์ฌ์ฉ๋ ๋ฉ์ธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด
UIKit: ์ฌ์ฉ์ ์ธํฐํ์ด์ค ๊ตฌ์ถ
SnapKit: AutoLayout ๊ฐํธํ
๋ฐ์ดํฐ ๊ด๋ฆฌ:
Core Data: ๋ณต์กํ ๋ฐ์ดํฐ ๊ด๋ฆฌ์ ๊ด๊ณ ์ค์
UserDefaults: ๊ฐ๋จํ ์ฌ์ฉ์ ์ค์ ๊ณผ ๋ก๊ทธ์ธ ์ํ ์ ์ฅ
์ํคํ
์ฒ ํจํด:
MVC: ๋ช
ํํ ์ญํ ๋ถ๋ฆฌ๋ฅผ ํตํด ์ฝ๋ ์ ์ง๋ณด์์ฑ๊ณผ ๊ฐ๋
์ฑ ํฅ์
๋ฒ์ ๊ด๋ฆฌ:
Git/GitHub: Git Flow ์ ๋ต์ ํ์ฉํด ํ์
๋ฐ ์ฝ๋ ๊ด๋ฆฌ
Core Data ๊ด๋ฆฌ:
ํฅ๋ณด๋ ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ์ ์ฅ, ์์ , ์ญ์ , ์กฐํ.
ํน์ ์กฐ๊ฑด(์: isOccupied == true)์ผ๋ก ํํฐ๋ง๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ๊ธฐ๋ฅ ์ถ๊ฐ.
UserDefaults ๊ด๋ฆฌ:
์ฌ์ฉ์ ๋๋ค์๊ณผ ๋ก๊ทธ์ธ ์ํ ์ ์ฅ.
์๋ ๋ก๊ทธ์ธ ์ต์
๋ฐ ๋ง์ง๋ง ์ด๋ฉ์ผ ์ ์ฅ ๊ธฐ๋ฅ.
UI ๊ตฌํ:
MyPageViewController: ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ํ์ํ๊ณ ํ์คํ ๋ฆฌ ๋ฐ์ดํฐ๋ฅผ ๋ก๋.
KickboardSectionView: ๋ฑ๋กํ ํฅ๋ณด๋ ๊ด๋ฆฌ ํ๋ฉด.
HistorySectionView: ํ์คํ ๋ฆฌ ๋ฐ์ดํฐ๋ฅผ ํ์ํ๋ฉฐ, Core Data์์ ๋๊ธฐํ ๊ธฐ๋ฅ.
๋ก๊ทธ์์ ๊ธฐ๋ฅ:
๊ฒฝ๊ณ ์ฐฝ(Alert)๊ณผ ์ฑ๊ณต ๋ฉ์์ง๋ฅผ ํตํด UX ๊ฐํ.
Core Data Fetch ํ UI ๊ฐฑ์ ๋ฌธ์
๋ฌธ์ : Fetchํ ๋ฐ์ดํฐ๋ฅผ UI์ ๋ฐ์ํ์ง ์์ ๋น ํ๋ฉด์ด ๋ํ๋๋ ๋ฌธ์ .
ํด๊ฒฐ: configureSections() ๋ฉ์๋๋ฅผ ํธ์ถํด ๋ฐ์ดํฐ ๊ฐฑ์ ๋ก์ง ์ถ๊ฐ.
UserDefaults ๋ฐ์ดํฐ ๋ฐ์ ๋ฌธ์
๋ฌธ์ : ๋๋ค์ ๋ณ๊ฒฝ ํ ํ๋ฉด์ ์ฆ์ ๋ฐ์๋์ง ์์.
ํด๊ฒฐ: ๋๋ค์ ๋ณ๊ฒฝ ์ saveUser() ํธ์ถ ๋ฐ ๋ทฐ๋ฅผ ๋ฆฌ๋ก๋ํ๋๋ก ์ค์ .
AutoLayout ์ถฉ๋
๋ฌธ์ : ํ๋ฉด ํฌ๊ธฐ์ ๋ฐ๋ผ UI ์์๊ฐ ๊ฒน์น๊ฑฐ๋ ์์น๊ฐ ์ด๊ธ๋จ.
ํด๊ฒฐ: ๋ชจ๋ UI ์์์ ๋ง์ง๊ณผ ๊ฐ๊ฒฉ์ ๋ช
ํํ ์ ์ํ๊ณ ์ ์ฝ ์กฐ๊ฑด์ ์์ .
Delegate ํจํด ๊ตฌํ ๋๋ฝ
๋ฌธ์ : Delegate ํจํด ๊ตฌํ ๋ฉ์๋๋ฅผ ๋๋ฝํ์ฌ ์ปดํ์ผ ์ค๋ฅ ๋ฐ์.
ํด๊ฒฐ: ๋ชจ๋ ๊ด๋ จ ํ๋กํ ์ฝ ๋ฉ์๋๋ฅผ ํ์์ ์ผ๋ก ๊ตฌํ.
# ๐ก ๋ฐฐ์ด ์
Core Data์ UserDefaults์ ํ์ฉ:
๋ณต์กํ ๋ฐ์ดํฐ์ ๊ฐ๋จํ ์ค์ ๋ฐ์ดํฐ๋ฅผ ์ ์ ํ ๋ถ๋ฆฌํ์ฌ ๊ด๋ฆฌ.
Core Data์ NSFetchRequest์ NSPredicate๋ฅผ ํ์ฉํ ๋ฐ์ดํฐ ํํฐ๋ง.
UI์ ๋ฐ์ดํฐ ๋๊ธฐํ์ ์ค์์ฑ:
๋ฐ์ดํฐ๋ฅผ Fetchํ ํ UI๋ฅผ ์ฆ๊ฐ์ ์ผ๋ก ๊ฐฑ์ ํ์ง ์์ผ๋ฉด ์ฌ์ฉ์ ๊ฒฝํ์ด ์ ํ๋๋ค๋ ์ ์ ์ค๊ฐ.
ViewController์ Custom View ๊ฐ์ ๋ช
ํํ ์ญํ ๋ถ๋ฐฐ.
ํ์ํฌ์ Git Flow์ ํจ์จ์ฑ:
Git Flow๋ฅผ ํตํด ๋ธ๋์น ๊ด๋ฆฌ์ ํ์
ํ์ง์ ๋์ผ ์ ์์์.
PR ๋ฆฌ๋ทฐ๋ฅผ ํตํ ์ฝ๋ ๊ฐ์ ๊ณผ ํ์ ๊ฐ์ ์ํธ ํผ๋๋ฐฑ.
์ด๋ฒ ํ๋ก์ ํธ๋ iOS ๊ฐ๋ฐ์ ํต์ฌ์ธ Core Data, UserDefaults, UI ๊ตฌ์ฑ์ ์ค๋ฌด์ ์ผ๋ก ๋ค๋ฃฐ ์ ์๋ ์ข์ ๊ธฐํ์์ต๋๋ค. ํนํ ํ์๋ค๊ณผ์ ์ํํ ์ํต๊ณผ ํ์ ์ ํตํด ์์๋ณด๋ค ๋ ๋ง์ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ณ ์ต์ ํํ ์ ์์์ต๋๋ค. Git Flow์ PR ๋ฆฌ๋ทฐ ๋๋ถ์ ์ฝ๋ ํ์ง์ ์ ์งํ ์ ์์๊ณ , ๋ค์ํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ฉฐ ๊ฐ๋ฐ์๋ก์ ํ ๋จ๊ณ ์ฑ์ฅํ ์ ์์์ต๋๋ค.
์ฝ๋์ ๊ฐ๋
์ฑ๊ณผ ์ ์ง๋ณด์์ฑ: ์์ผ๋ก๋ ๋ ๊ฐ๋
์ฑ ๋์ ์ฝ๋๋ฅผ ์์ฑํ ์ ์๋๋ก ์ ๊ฒฝ ์ธ ๊ฒ์
๋๋ค.
UX ํฅ์: ์ฌ์ฉ์ ๊ฒฝํ์ ๊ณ ๋ คํ UI/UX ์ค๊ณ์ ๋ ๋ง์ ์๊ฐ์ ํฌ์.
๋ฐ์ดํฐ ๊ด๋ฆฌ ๊ธฐ์ : Core Data์ UserDefaults ์ธ์๋ ๋ค๋ฅธ ๋ฐ์ดํฐ ๊ด๋ฆฌ ๊ธฐ์ (AWS, Firebase ๋ฑ)์ ๊ณต๋ถํ๊ณ ์ถ์ต๋๋ค.
QuickKick ํ๋ก์ ํธ๋ ๋๋ฌ์ง๋ง, ๋ฐฐ์ด ์ ์ ๋ค์ ํ๋ก์ ํธ์์๋ ํฐ ๋์์ด ๋ ๊ฒ์
๋๋ค.