๐ฑ MEMO
๐ ๊ฐ์ ๋ด์ฉ
2022.10.24 > ๊ธฐ์กด ํ
์ด๋ธ ๋ทฐ๋ฅผ Compositional Layout + Diffable Datasource๋ก ๋ณ๊ฒฝ
๐ฑ ํ๋ฉด๊ณผ ๊ธฐ๋ฅ, ๊ตฌํ๋ฐฉ์
๐ค ์ฐ์ปด ์คํฌ๋ฆฐ
UserDefaults
์์ Bool
ํ์
๋ณ์๋ฅผ ์ด์ฉํด ์ฑ ์ฒซ์คํ์ฌ๋ถ๋ฅผ ์ฒดํฌํ๊ณ ์ฒ์์ผ ๊ฒฝ์ฐ์๋ง ๋ณด์ฌ์ค๋๋ค.
- ํ์ ํ์
|
![Simulator Screen Recording - iPhone 11 - 2022-09-05 at 01 54 20](https://user-images.githubusercontent.com/51395335/188351455-41f40215-f24a-40d3-bc50-5bbaa48b51d0.gif) |
๐ ๋ฉ๋ชจ ์์ฑํ๊ธฐ
- ๋ฉ๋ชจ ์์ฑ ์ ์ฒซ๋ฒ์งธ ๊ฐํ๋ฌธ์๋ฅผ ๋ฐ๊ฒฌํ๊ธฐ ์ ๊น์ง๋ ํ์ดํ, ์ดํ๋ ์ฝํ
์ธ ๋ก ์ ์ฅํฉ๋๋ค. ์๋ฃ๋ฒํผ์ ๋๋ฅด๊ฑฐ๋ ๋ค๋ก๊ฐ๊ธฐ๋ฅผ ๋๋ฅด๋ฉด ์ ์ฅ๋ฉ๋๋ค.
- ๋ฉ๋ชจ ์์ฑ ์ ํค๋ณด๋์ ๋ฐ ๋ฒํผ์ด ๋ชจ๋ ๋ณด์
๋๋ค.
- ๋ด์ฉ์ด ์์ผ๋ฉด ์ ์ฅํ์ง ์์ต๋๋ค.
- ๊ณต์ ๋ฒํผ์ ๋๋ฅด๋ฉด ์์ฑ๋ ๋ด์ฉ์ด
Activity View
๋ฅผ ํตํด ๊ณต์ ๋ฉ๋๋ค. (๋ด์ฉ์ด ์์ ๊ฒฝ์ฐ ๊ณต์ ๊ฐ ๋์ง ์์ต๋๋ค.)
- ๋ฉ๋ชจ ์์ฑํ๊ธฐ |
- ๋ด์ฉ์ด ์์ผ๋ฉด ์ ์ฅํ์ง ์๊ธฐ |
- ๋ฉ๋ชจ ๊ณต์ ํ๊ธฐ |
![Simulator Screen Recording - iPhone 11 - 2022-09-06 at 01 21 04](https://user-images.githubusercontent.com/51395335/188488775-0cb51536-fa66-4f39-98bb-7b56aab3851e.gif) |
![Simulator Screen Recording - iPhone 11 - 2022-09-05 at 16 13 27](https://user-images.githubusercontent.com/51395335/188389038-5925d2d5-3b09-4d33-9631-e8d0d94378e1.gif) |
![Simulator Screen Recording - iPhone 11 - 2022-09-05 at 16 13 56](https://user-images.githubusercontent.com/51395335/188389183-a51f0094-e4ee-4b07-bc93-87400655273e.gif) |
๐ ๋ฉ๋ชจ ์์ ํ๊ธฐ
- ๋ฆฌ์คํธ์์ ์
์ ์ ํํ๋ฉด ์์ ํ๊ธฐ๋ก ๋์ด๊ฐ๊ณ , ํค๋ณด๋์ ๋ฐ ๋ฒํผ์ด ๋ณด์ด์ง ์์ต๋๋ค.
- ์์ ์ฐฝ์์ ํ ๋ฒ ๋ ํญํ๋ฉด ํค๋ณด๋์ ๋ฐ ๋ฒํผ์ด ๋ณด์
๋๋ค.
- ๋ฉ๋ชจ ์์ |
![Simulator Screen Recording - iPhone 11 - 2022-09-06 at 01 26 30](https://user-images.githubusercontent.com/51395335/188489244-5c807f17-1f5c-487e-a4d8-193ab9816389.gif) |
๐งฉ ๋ฉ๋ชจ ๋ฆฌ์คํธ
- ์ค๋ ์ค์ ์์ฑ๋ ๋ฉ๋ชจ๋ ์๊ฐ, ์ฃผ์ค์ ์์ฑ๋ ๋ฉ๋ชจ๋ ์์ผ, ๊ทธ ์ธ์๋ ๋
์์
์ด ์
๋ ฅ๋๋๋ก ํฉ๋๋ค.
- ๋ฉ๋ชจ์ ๊ฐ์๋ ๋ฐ๋ก ๋ฐ์๋์ ์์ ๋จ๊ฒ ๋ฉ๋๋ค. ๋ง์ฝ 1์ฒ๊ฐ๊ฐ ๋์ ๊ฒฝ์ฐ ์ธ์๋ฆฌ์๋ง๋ค ์ผํ๊ฐ ํ์๋ฉ๋๋ค.
leadingSwipeAction
์ผ๋ก ๋ฉ๋ชจ๋ฅผ ๊ณ ์ ํ ์ ์์ต๋๋ค.
trailingSwipeAction
์ผ๋ก ๋ฉ๋ชจ๋ฅผ ์ญ์ ํ ์ ์์ต๋๋ค.
- ๋ฉ๋ชจ ๋ชฉ๋ก |
- ์ค์์ดํ์ก์
- ํ ๊ณ ์ |
- ์ค์์ดํ์ก์
- ์ญ์ |
![Simulator Screen Recording - iPhone 11 - 2022-09-06 at 01 36 14](https://user-images.githubusercontent.com/51395335/188490251-824f7249-d15d-4706-b99c-6ae236a12365.gif) |
![Simulator Screen Recording - iPhone 11 - 2022-09-06 at 01 33 40](https://user-images.githubusercontent.com/51395335/188490025-7e67b282-492d-432e-9e54-8e3fb55e7da1.gif) |
![Simulator Screen Recording - iPhone 11 - 2022-09-06 at 01 34 56](https://user-images.githubusercontent.com/51395335/188490145-2f89af7c-a0c2-4622-9c17-dee04adac403.gif) |
๐ ๊ฒ์
- ๊ฒ์์ด์ ์ผ์นํ๋ ๋ฉ๋ชจ๋ฅผ ์ค์๊ฐ์ผ๋ก ๋ณด์ฌ์ค๋๋ค.
- ์ผ์นํ ๋ฌธ์์ด์ ์๊น์ด ๋ค๋ฅด๊ฒ ํ์๋ฉ๋๋ค.
- ๊ฒ์์ฐฝ์์ ๊ฒ์๊ฒฐ๊ณผ๋ฅผ ํด๋ฆญํด๋ ๋ฉ๋ชจ ์์ ํ๊ธฐ ํ๋ฉด์ ๋ณผ ์ ์์ต๋๋ค.
- ๊ฒ์ํ๋ฉด |
![Simulator Screen Recording - iPhone 11 - 2022-09-06 at 01 38 52](https://user-images.githubusercontent.com/51395335/188490539-75b44e2b-4b2b-498e-bc8d-7f785e5dd613.gif) |
๐ญ ๋์๋ณด๋ฉฐ
ํ์์๋ ์ปค๋ฐ์ด๋ ๋ฌธ์, ์ด์์ ์ ํ ์ ๊ฒฝ์ฐ์ง ์์๋๋ฐ, ์ด๋ฒ์๋ ์ต๋ํ ๊ณผ์ ๊ณผ ์ฝ๋์ ์ปค๋ฐ์ ๋จ์๋ฅผ ๋ณด๊ธฐ ์ข๊ฒ ๋ง๋ค๊ณ ์ถ๋ค๋ ์๊ฐ์ผ๋ก ํ๋ก์ ํธ๋ฅผ ์งํํ์ต๋๋ค.
๋ฏธ๋ฆฌ ์๊ตฌ์ฌํญ์ ์ด์๋ก ์ ๋ฆฌํ๊ณ ์ปค๋ฐ์ ์๊ฐ ์ชผ๊ฐ๊ณ , ์ด์ ํ
ํ๋ฆฟ๊ณผ 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
์ ๋ํด ์ข ๋ ์ฐพ์๋ณด๊ธฐ!