Smile Blog : ์๊ณ ์ฝ์๋ค ๐
์ฌ์ฉ์์ ๋ฐฐ๊ฒฝ ํ๋ฉด๊ณผ ๋ธ๋ก๊ทธ ๊ธ ๋ฆฌ์คํธ๋ฅผ ํ์ธํ ์ ์๋ค.
keyword: UITableView, CustomView
TabBarController๋ฅผ ํตํ ๋ชจ๋ฌ ๋ทฐ ์ ํ ํ ์ ๊ธ ์์ฑ์ ํ ์ ์๋ค. ์ ๋ ฅํด์ผํ ํญ๋ชฉ์ด ์ ๋ถ ์์ฑ๋์ด์ผ ๋ฑ๋ก์ด ๊ฐ๋ฅํ๋ค. ๊ธ์ด ์์ฑ๋๊ฑฐ๋, ์ทจ์๋๋ฉด ์ด์ ํ๋ฉด์ผ๋ก ์ ํ๋๋ค.
keyword: UITabBarController-Modal, DB Query
์ ๊ธ ์ฐ๊ธฐ | ์ผ๋ถ ๋ฏธ์ ๋ ฅ ์ | ํ๋ฉด ์ ํ | |
---|---|---|---|
๋ค๋น๊ฒ์ด์ ๋ฐ ๋ฒํผ์ ํตํด ๊ธ์ ์์ ํ๊ฑฐ๋ ์ญ์ ํ ์ ์๋ค.
์์ ์์ ๊ฒ์๊ธ ๋ทฐ ์ ํ๋๊ณ , ์ญ์ ์์ ๊ฒ์๊ธ ๋ฆฌ์คํธ๋ก ํ๋ฉด์ด ์ ํ๋๋ค.
keyword: Notification Center, ๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ, DB Query
์์ ์์ฒญ | ๊ธ ์์ ํ๋ฉด | ์๋ฃ ์ ํ๋ฉด ์ ํ | |
---|---|---|---|
์ญ์ ์์ฒญ | ์์ฒญ ์ ์ผ๋ฟ ๋ทฐ ๋์ | ์๋ฃ ์ ํ๋ฉด ์ ํ | |
์ ํ๋ ํฌ์คํธ์ ๋๊ธ์ ์ธ ์ ์๋ค.
keyword: NotificationCenter, ScrollView, DB Query
ํค๋ณด๋ ON | ํค๋ณด๋ OFF | ๋๊ธ ๋ฑ๋ก | |
---|---|---|---|
์ด๋ฏธ ๋ก๊ทธ์ธ์ด ๋์ด ์๋ค๊ณ ๊ฐ์ ํ์ ๋, ์ ์ ์ค์ ์ ์ํด ์ถ๊ฐ ๊ตฌํํจ. ์ ๋ณด ์์ ์์ฒญ์ ๋ฐ๋ฅธ ์ผ๋ฟ ๋ทฐ ๊ตฌํ ์ธ ์ถ๊ฐ์ ์ธ ๊ธฐ๋ฅ ๊ตฌํ์ ํ์ง ์์์.
๋ง์ด ํ์ด์ง | ์ ๋ณด ์์ ์์ฒญ |
---|---|
Project | Smile Blog |
---|---|
UI ๊ตฌํ | UIKit |
์ํคํ ์ณ | MVC |
๋ก์ปฌ ๋ฐ์ดํฐ ์ ์ฅ์ | SQLite |
๋ธ๋ก๊ทธ ์๋น์ค๋ ์ค์ ์๋ฒ๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๋ ๊ณผ์ ์ด ์๊ตฌ๋๊ธฐ ๋๋ฌธ์ ์๋ฒ๊ฐ ๊ตฌํ๋์ง ์์์ผ๋, ์ค์ ์๋ฒ ๊ตฌ์ถ์ด ๋ ๊ฒ์์ ๊ณ ๋ คํ์ฌ, ๋ฐ์ดํฐ ์์ฒญ์ ์ํ ๊ณผ์ ์ ๋ฏธ๋ฆฌ ๊ตฌํํ๋ค.
ํ๋ MOCK์ ์ฌ์ฉํ ํต์ ๋ก์ง์ ๊ตฌํํ๋๋ผ๋ ์ค์ ํต์ ์์ด๋ ๋ธ๋ก๊ทธ ๊ธ์ ๋ํ CRUD๊ฐ ์ด๋ ต๋ค๊ณ ํ๋จ์ด ๋์ด, ๋ฐ์ดํฐ ์์ฒญ์ ๋์ฒดํ๊ธฐ ์ํด ๋ก์ปฌ ๋ฐ์ดํฐ ๋ฒ ์ด์ค๋ฅผ ํ์ฉํ๋ค.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ํ
- sqlite3 [O]
- coreData [X]
=> SQLite
์ ์ ๊ธฐ์ค
- CoreData๋ฅผ ํ์ฉํ ํ๋ก์ ํธ ๊ฒฝํ โญ๏ธ
๋ฐ๋ผ์ SQLite๋ ์ฌ์ฉํด๋ณด๊ณ ์ถ์๋ค. ์ฟผ๋ฆฌ๋ฌธ์ ์ง์ ๋ค๋ฃจ๋ SQLite ์ฌ์ฉํด DB๋ฅผ ๊ตฌ์ฑ.
๋ด๋ถ์ ์ผ๋ก SQLite ์ฌ์ฉํ๋ ๊ฒ์ ๋์ผํ์ง๋ง, ์ง์ ์ฟผ๋ฆฌ๋ฌธ์ ์์ฑํด์ผ ํ๋ค!
์ด๋ฒ ๊ธฐํ์ ๋ง์ด ๋ค๋ค๋ณด์!
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๊ณ
-
Post Table
column ๋ด์ฉ ์์ฑ post_num ๊ธ ๋ฒํธ ์ ์ฅ / AutoIncrease INTEGER post_title ๊ธ ์ ๋ชฉ ์ ์ฅ TEXT post_content ๊ธ ๋ด์ฉ ์ ์ฅ TEXT post_date ๊ธ ์์ฑ ๋ ์ง ๋ฐ ์๊ฐ ์ ์ฅ TEXT -
comment Table
column ๋ด์ฉ ์์ฑ comment_num ๋๊ธ ๋ฒํธ ์ ์ฅ / AutoIncrease INTEGER comment_user ๋๊ธ ์์ฑ์ ์ ์ฅ TEXT comment_post ๋๊ธ์ด ์์ฑ๋ ๊ธ post_num ์ ์ฅ INTEGER comment_content ๋๊ธ ๋ด์ฉ ์ ์ฅ TEXT comment_date ๋๊ธ ์์ฑ ๋ ์ง ๋ฐ ์๊ฐ ์ ์ฅ TEXT
MVC(Model-View-Controller)
MVC ๊ตฌ์กฐ๋ก ์์ฑํ ๊ฒฝ์ฐ, ViewController๊ฐ ํ๋ ์ญํ ์ด ๋ง์์ง๋๋ฐ(Massive View Controller)
ํด๋น ๊ตฌ์กฐ์์ ์ต๋ํ ์ค๋ณต ์ฝ๋๋ฅผ ์ค์ด๊ธฐ ์ํด ๊ณตํต๋ ๊ตฌํ์ ๊ฒฝ์ฐ, Protocol์ Extension์ ํ์ฉํ๋ค.
-
์ฝ๋๋ฅผ ํ์ฉํ ๋ ์ด์์ ๊ตฌ์ฑ
=>
ํ์ ์
์ธํฐํ์ด์ค ๋น๋์ ์ฌ์ฉ์ผ๋ก ์๊ธธ ์ ์๋ ์ฝ๋ ๊ฐ ์ถฉ๋์ ๋ง๋ค ์ ์๋ ๋จ์ ๋ณด์ํ๊ธฐ ์ํจ.
protocol | ์ญํ |
---|---|
ViewConfiguration |
ViewController์์ ์ฑํ ํ ๋ทฐ์ ๊ณ์ธต, ์ ์ฝ, ์ค์ ์ ํ๋๋ก ํจ. |
PostReloadable |
Post๋ฅผ ๊ฐ์ง ์ผ๋ถ ViewController์์ ์ฑํ ํ MainView ๋ด ํ ์ด๋ธ๋ทฐ Reload ์์ฒญ. |
class | ์ญํ |
---|---|
IntroduceCell |
MainViewController์์ ๋ธ๋ก๊ทธ ์๊ฐ ์ ์ ๊ตฌ์ฑ |
MainTableViewCell |
MainViewController์ ๋ธ๋ก๊ทธ ํฌ์คํธ ์ ์ ๊ตฌ์ฑ |
DetailViewContentCell |
DetailViewController ๋ด ๋ธ๋ก๊ทธ ๊ธ์ ๊ตฌ์ฑ |
DetailViewCommentCell |
DetailViewController ๋ด ๋ธ๋ก๊ทธ ๋๊ธ์ ๊ตฌ์ฑ |
class | ์ญํ |
---|---|
MainTabBarController |
ํญ ๋ฐ ๊ตฌ์ฑ |
MainViewController |
๋ธ๋ก๊ทธ ํฌ์คํธ ๋ฆฌ์คํธ ํ๋ฉด ๊ตฌ์ฑ |
NewPostViewController |
์ ๊ธ ์์ฑ ํ๋ฉด ๊ตฌ์ฑ |
DetailViewController |
ํฌ์คํธ ํ๋ฉด ๊ตฌ์ฑ |
UpdatePostViewController |
ํฌ์คํธ ์์ ํ๋ฉด ๊ตฌ์ฑ |
UserSettingViewController |
์ฌ์ฉ์ ํ๋ฉด ๊ตฌ์ฑ(๋ฏธ๊ตฌํ) |
struct | ์ญํ |
---|---|
Post |
๊ธ ๊ตฌ์ฑ |
Comment |
๋๊ธ ๊ตฌ์ฑ |
class | ์ญํ |
---|---|
FMDBManager |
SQLite ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๊ฒฐ ํ, ๋ฐ์ดํฐ CRUD |
SPM(Swift Package Manager)
- FMDB : DB ๊ตฌ์ฑ์ ์ํด ์ฌ์ฉ
- ๋ด๋ถ์ ์ผ๋ก SQLite3๋ฅผ ์ฌ์ฉ.
Navigation Controller1 - (root 1) -> View Controller A -(modal)-> Navigation Controller 2 -(root 2)-> View Controller B(UIVIewController) ์ ๊ณผ์ ์ผ๋ก ๋ชจ๋ฌ์ ๋์ฐ๋ ๊ณผ์ ์์ root 2์ ํด๋นํ๋ navigation Controller์์ navigation Item์ด ์ ๋๋ก ์ถ๋ ฅ๋์ง ์๋ ๋ชจ์ต์ ํ์ธํ ์ ์์๋ค. View Controller B๋ฅผ Navigation Controller 2๋ฅผ root๋ก ๊ฐ์ธ์คฌ์์๋ ๋ถ๊ตฌํ๊ณ ์ ๋๋ก ์ถ๋ ฅ์ด ๋์ง ์์์ ๋นํฉํ๋ค.
๋ฌธ์ ์ํฉ | ์ํ๋ ๋ชจ์ต |
---|---|
๋ค๋น๊ฒ์ด์ 2๋ฅผ ๋ชจ๋ฌ๋ก ๋์ธ ๋, View Controller B์์๋ NavigationBar์ด ๋์ค์ง ์๋๋ฐ ํด๊ฒฐ ๋ฐฉ๋ฒ
์ ๊ธ์ ์์ฑํ๋ ๋ทฐ๋ ์๋ก์ด ํ๋ฆ์ ๊ฐ์ ธ๊ฐ์ผํ๋๋ฐ, ๊ธฐ์กด ๋ค๋น๊ฒ์ด์ ์คํ์ ํ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ทฐ์ ๊ตฌ์ฑ์์ ์ผ๊ด์ฑ์ ํด์น ์ ์๋ค๊ณ ์๊ฐํด modal ๋ทฐ๋ก์ ๊ตฌํ์ ์๊ฐํ์. ํ์ง๋ง ๋ณธ ๋ชจ๋ฌ์ ์ฑ์์ ์ ๊ธ ์์ฑ ์ธ์ ํ ๊ธฐ๋ฅ์ ํ์ง ์๊ธฐ ๋๋ฌธ์ ์์ ์ํฉ์ ๋ทฐ์ ์ง์ ๋ค๋น๊ฒ์ด์ ๋ฐ๋ฅผ ์์ฑํด์ฃผ๋ ๋ฐฉ์์ ํ์ฉํด ๋ทฐ๋ฅผ ๊ตฌ์ฑํ๋ค. Modal ์ ๋๋ก ๋จ์ง ์๋ ๋ฌธ์ ์ ๊ด๋ จ ์ฐธ๊ณ ๋งํฌ
๋ณธ๋ฌธ์ ๋ด์ฉ์ด ๊ธธ์ด์ง ๊ฒฝ์ฐ, ํ๋จ์ ํค๋ณด๋ ์์ญ์ ์ํด ๋ณธ๋ฌธ์ ์์ญ์ด ์ ๋๋ก ๋ณด์ด์ง ์๋ ๋ฌธ์ ๊ฐ ๋ฐ์. ํค๋ณด๋๊ฐ ์ฌ๋ผ์ ์๋ ๊ฒฝ์ฐ, NotificationCenter์ ํ์ฉํด ํด๋น ํ ์คํธ ๋ทฐ์ ์ตํ๋จ์ด ํค๋ณด๋๋ณด๋ค ์๋ก ์ฌ๋ผ๊ฐ ์ ์๋๋ก ์ค์ ํ๋ค. ๋ํ ํค๋ณด๋๊ฐ ๋ด๋ ค๊ฐ๋ ์ํฉ์ ์ด์ ๋ฐ๋๋ก ํ ์คํธ ๋ทฐ๊ฐ ๋ค์ ๋ถ๋ชจ ๋ทฐ์ ์ตํ๋จ ์์ญ๊ณผ ๋์ผํ ๋ ์ด์์ ์ ์ฝ ๊ฐ์ ๊ฐ์ง๋๋ก ํ๋ค.
๋ฌธ์ ์ํฉ | ํด๊ฒฐ ์ํฉ |
---|---|
๊ธ ์์ฑ, ์์ , ๋๊ธ ์์ฑ ๋ชจ๋ ํค๋ณด๋์ ์ํ ๋ ์ด์์ ๋ณ๊ฒฝ์ด ์ผ์ด๋์ผ ํด์ ์ฌ๋ฌ ์ํฉ์ ๋ง์ด ๊ฒฝํํ ์ ์์๋ค. ํ์ง๋ง NotificationCenter์ ์ฌ์ฉํ ๊ฒฝ์ฐ, Listener ๋ชจ๋์๊ฒ ์ ๋ฌ๋๋ ์ ์ ๊ณ ๋ คํ๋ฉด ๋๋ฌด ๋ง์ด ์ฌ์ฉ๋ ๊ฒฝ์ฐ, ์ฝ๋ ์ ํ์ด ๋ง์ด ๋ฐ์ํ ์ ์์ด delegate Pattern๋ ๊ณ ๋ คํด๋ด์ผ๊ฒ ๋ค.