2022.10.24 > ๊ธฐ์กด ํ ์ด๋ธ ๋ทฐ๋ฅผ Compositional Layout + Diffable Datasource๋ก ๋ณ๊ฒฝ
UserDefaults์์ Boolํ์
 ๋ณ์๋ฅผ ์ด์ฉํด ์ฑ ์ฒซ์คํ์ฌ๋ถ๋ฅผ ์ฒดํฌํ๊ณ  ์ฒ์์ผ ๊ฒฝ์ฐ์๋ง ๋ณด์ฌ์ค๋๋ค.
| - ํ์ ํ์ | 
|---|
|  | 
- ๋ฉ๋ชจ ์์ฑ ์ ์ฒซ๋ฒ์งธ ๊ฐํ๋ฌธ์๋ฅผ ๋ฐ๊ฒฌํ๊ธฐ ์ ๊น์ง๋ ํ์ดํ, ์ดํ๋ ์ฝํ ์ธ ๋ก ์ ์ฅํฉ๋๋ค. ์๋ฃ๋ฒํผ์ ๋๋ฅด๊ฑฐ๋ ๋ค๋ก๊ฐ๊ธฐ๋ฅผ ๋๋ฅด๋ฉด ์ ์ฅ๋ฉ๋๋ค.
- ๋ฉ๋ชจ ์์ฑ ์ ํค๋ณด๋์ ๋ฐ ๋ฒํผ์ด ๋ชจ๋ ๋ณด์ ๋๋ค.
- ๋ด์ฉ์ด ์์ผ๋ฉด ์ ์ฅํ์ง ์์ต๋๋ค.
- ๊ณต์  ๋ฒํผ์ ๋๋ฅด๋ฉด ์์ฑ๋ ๋ด์ฉ์ด Activity View๋ฅผ ํตํด ๊ณต์ ๋ฉ๋๋ค. (๋ด์ฉ์ด ์์ ๊ฒฝ์ฐ ๊ณต์ ๊ฐ ๋์ง ์์ต๋๋ค.)
| - ๋ฉ๋ชจ ์์ฑํ๊ธฐ | - ๋ด์ฉ์ด ์์ผ๋ฉด ์ ์ฅํ์ง ์๊ธฐ | - ๋ฉ๋ชจ ๊ณต์ ํ๊ธฐ | 
|---|---|---|
|  |  |  | 
- ๋ฆฌ์คํธ์์ ์ ์ ์ ํํ๋ฉด ์์ ํ๊ธฐ๋ก ๋์ด๊ฐ๊ณ , ํค๋ณด๋์ ๋ฐ ๋ฒํผ์ด ๋ณด์ด์ง ์์ต๋๋ค.
- ์์ ์ฐฝ์์ ํ ๋ฒ ๋ ํญํ๋ฉด ํค๋ณด๋์ ๋ฐ ๋ฒํผ์ด ๋ณด์ ๋๋ค.
| - ๋ฉ๋ชจ ์์  | 
|---|
|  | 
- ์ค๋ ์ค์ ์์ฑ๋ ๋ฉ๋ชจ๋ ์๊ฐ, ์ฃผ์ค์ ์์ฑ๋ ๋ฉ๋ชจ๋ ์์ผ, ๊ทธ ์ธ์๋ ๋ ์์ ์ด ์ ๋ ฅ๋๋๋ก ํฉ๋๋ค.
- ๋ฉ๋ชจ์ ๊ฐ์๋ ๋ฐ๋ก ๋ฐ์๋์ ์์ ๋จ๊ฒ ๋ฉ๋๋ค. ๋ง์ฝ 1์ฒ๊ฐ๊ฐ ๋์ ๊ฒฝ์ฐ ์ธ์๋ฆฌ์๋ง๋ค ์ผํ๊ฐ ํ์๋ฉ๋๋ค.
- leadingSwipeAction์ผ๋ก ๋ฉ๋ชจ๋ฅผ ๊ณ ์ ํ ์ ์์ต๋๋ค.
- trailingSwipeAction์ผ๋ก ๋ฉ๋ชจ๋ฅผ ์ญ์ ํ ์ ์์ต๋๋ค.
| - ๋ฉ๋ชจ ๋ชฉ๋ก | - ์ค์์ดํ์ก์  - ํ ๊ณ ์  | - ์ค์์ดํ์ก์  - ์ญ์  | 
|---|---|---|
|  |  |  | 
- ๊ฒ์์ด์ ์ผ์นํ๋ ๋ฉ๋ชจ๋ฅผ ์ค์๊ฐ์ผ๋ก ๋ณด์ฌ์ค๋๋ค.
- ์ผ์นํ ๋ฌธ์์ด์ ์๊น์ด ๋ค๋ฅด๊ฒ ํ์๋ฉ๋๋ค.
- ๊ฒ์์ฐฝ์์ ๊ฒ์๊ฒฐ๊ณผ๋ฅผ ํด๋ฆญํด๋ ๋ฉ๋ชจ ์์ ํ๊ธฐ ํ๋ฉด์ ๋ณผ ์ ์์ต๋๋ค.
| - ๊ฒ์ํ๋ฉด | 
|---|
|  | 
ํ์์๋ ์ปค๋ฐ์ด๋ ๋ฌธ์, ์ด์์ ์ ํ ์ ๊ฒฝ์ฐ์ง ์์๋๋ฐ, ์ด๋ฒ์๋ ์ต๋ํ ๊ณผ์ ๊ณผ ์ฝ๋์ ์ปค๋ฐ์ ๋จ์๋ฅผ ๋ณด๊ธฐ ์ข๊ฒ ๋ง๋ค๊ณ  ์ถ๋ค๋ ์๊ฐ์ผ๋ก ํ๋ก์ ํธ๋ฅผ ์งํํ์ต๋๋ค.
๋ฏธ๋ฆฌ ์๊ตฌ์ฌํญ์ ์ด์๋ก ์ ๋ฆฌํ๊ณ  ์ปค๋ฐ์ ์๊ฐ ์ชผ๊ฐ๊ณ , ์ด์ ํ
ํ๋ฆฟ๊ณผ PR ํ
ํ๋ฆฟ์ ๋ง๋ค๊ณ  ์ปค๋ฐ ๋ฉ์์ง์๋ ์ ๊ฒฝ์ ์ฐ๊ณ , ํด๋๋ง๊ณผ ์ฃผ์, ๊ตฌํํ๋ฉด์๋ ์ต๋ํ ๋ฐฐ์ด ๊ฐ๋
์ ํ์ฉํด๋ณด์๊ณ  ์๊ฐํ๋๋ฐ์.
์์ํ ์์ฌ์์ ์ฐจ์นํ๊ณ ์๋ผ๋ ๋ฉ๋ชจ ํ๋ก์ ํธ ์์ ์ง์ ์ ๋ฐฐ์ด Observable ๊ทธ๋ฆฌ๊ณ  ์ ์ฉํด๋ณด๊ณ  ์ถ์๋ DiffableDataSource์ Compositional Layout์ ์จ๋ณด์ง ๋ชปํด ํฐ ์์ฌ์์ด ๋จ์ต๋๋ค.
- RX์ MVVM์ ์ด์ฉํด ๊ฐ์ ํ๊ธฐ
- ์น์ ์ ๋๋ฌด ์์กดํ๋ ๋ถ๋ถ: ๊ฒ์์ค์ด ์๋ ๋์๋ ์์ ์น์  0์ ๊ณ ์ ๋ฉ๋ชจ ์์ญ์ผ๋ก ์ก์๋์๊ธฐ ๋๋ฌธ์, ๊ณ ์ ๋ฉ๋ชจ๊ฐ ์์ ๊ฒฝ์ฐ ์์ ๋น ๊ณต๊ฐ์ด ์ข ๋ ์๊ธด๋ค. ๋ค๋ฅธ ๊ณณ์์๋ ์น์  0์ ๊ธฐ์ค์ ์ผ๋ก ์ก์๋์๋๋ฐ, ์ด๊ฑธ ๋ฐ์ดํฐ ์ค์ฌ์ผ๋ก ๋ฐ๊ฟ์ผํ ๊ฒ ๊ฐ๋ค.
- ๊ฒ์ ์ฟผ๋ฆฌ์ ์ ์ฉ๋๋ ๋ฌธ์์ด์ ๋ ์ด๋ธ์ ๋ฐ๋ก ์ ์ฉํ  ์ ์๋๋ก UILabel์extension์ผ๋ก ํด๋์๋๋ฐ, ์คํ๋ ค ๋ฒ์ฉ์ ์ผ๋ก ์ฌ์ฉํ๊ธฐ๊ฐ ์ด๋ ต๊ฒ ๋์๋ค.String์extension์ผ๋ก ๋ฐ๋ก ๋ง๋ค์ด์ Attributed String์ ๋ฐ์์ค๋ ํํ๋ก ๊ฐ์ ํ๊ณ ์ถ๋ค.
- ํด๊ฒฐํจํ๋กํ ์ฝ์ ์ด์ฉํ์ฌ ๊ฐ์ ์ญ์ ๋ฌ ํ ๋: ์๊พธ ํด๋น ํ๋กํ ์ฝ ํ์ ์ VC๋ฅผ ๋ฃ์ ์ ์๋ค๋ ์๋ฌ๊ฐ ๋ด๋๋ฐ, ์๊ณ ๋ณด๋- var delegate = protocolName?์ผ๋ก ํด๋ ๊ฒ... ๐คฆ ๋ชป ์ฐพ์์ ๊ฒ์์ผ๋ก 3์๊ฐ ํค๋งธ๋ค.
- ํด๊ฒฐํจํ๋กํ ์ฝ ์ ์ํ ๋- AnyObject๋ฅผ ์ฑํํ์ง๋ง, ์ฝํ ์ฐธ์กฐ๋ก ์ ์ธํ์ง ์์ ๋ถ๋ถ -> ์ฝํ ์ฐธ์กฐ์ ๋ํด ์ฝํ ์ดํด๊ฐ ์์๋ค! ์์ ์ผ๋ก ๋ฐฐ์์ ๋ฐ๋ก ์ ์ฉํ๋ค!
- ํด๊ฒฐํจ์ฝ๋๋ก ๊ตฌํํ๊ณ ๋๋ ๊ฑธ ํ์ธํ๋ ๊ฒ ๊ฐ์๋ฐ, ์์  ๋ชจ๋์์ ๋ฐ๋ฒํผ ์์ดํ ๊ณผ ํค๋ณด๋๊ฐ ์ ๋๋ก ์ ์์ด์ง๋ ๊ฑธ ํ์ธํจ...๐ฅฒ -> ์กธ๋ ค์ ์ฝ๋๋ฅผ ์ข ๋ ๋ ธ๋ ๊ฒ ๊ฐ๋ค. ์ ์ถ ํ์ ์์ ํจ (์ด์ #40)
- Realm Object๋ฅผ ๋ค๋ฅธ ํ๋ฉด์ผ๋ก ๋ณด๋ด์, ๊ทธ๊ณณ์ ์ ์ธํ- repository๋ฅผ ์ด์ฉํ๋ฉด ๋์ผํ write thread๊ฐ ์๋๋ผ์ ์๊ธฐ๋ ์๋ฌ. ์ฐ๋ ๋์ ๋ํ ๋ถ๋ถ์ด ์์ง ์ด๋ ต๋ค.
- Done-- searchController๋ฅผ ์ ์ฉํ ์ํ์์ ์์ฑํ๊ธฐ๋ฅผ ํด๋ฆญํ๋ฉด, ์๋ฎฌ๋ ์ดํฐ์์๋ ๋ค๋น๊ฒ์ด์  ๋ฐ๊ฐ ์์ ์์ดํ  ํฌ๊ธฐ์ ๋ง์ถฐ ์๋์ผ๋ก ์ค์ด๋ค์ง๋ง ์ ๋๋ฐ์ด์ค์์๋ ๋ค๋น๊ฒ์ด์  ๋ฐ๊ฐ ์๋์ผ๋ก ์ ์ค์ด๋ค๊น? ->- prefersLargeTitle์- false๋ก ๋ฐ๊ฟ์ฃผ๋ฉด ๋๋ค. thx to @GoForWalk
- inset grouped์์ ์น์  ํค๋๊ฐ ์ ์ด ์์ํ๋ ์์น์ ๊ฐ์ผ๋ฉด ์ข๊ฒ ๋๋ฐ ์ด๋ป๊ฒ ์ฎ๊ธธ์ง.
- ์ค์์ดํ ์ก์  ์์ญ์ด ๋๋ฌด ํฐ ๊ฒ ๊ฐ์๋ฐ ๊ณต๊ฐ์ ์ค์ผ ์ ์์๊น?<- ์  ๋์ด๊ฐ ์์์ ๊ทธ๋ ๊ฒ ๋ณด์ด๋ ๊ฒ. ์ค์์ดํ์ก์ ์์ ๊ฐ๋ก๋ก ์ฐจ์งํ๋ ์์ญ ์์ฒด๋ ๋๊ฐ๋ค!
- isEditing์ ๋ํด ์ข ๋ ์ฐพ์๋ณด๊ธฐ!