์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- node.js
- XCTest
- BFS
- CollectionView
- Swfit
- SwiftUI
- TCA
- ํ๋ก๊ทธ๋๋จธ์ค
- ํจ์คํธ์บ ํผ์ค
- ios
- BOJ
- rxcocoa
- swift
- reactorkit
- Kuring
- MVVM
- combine
- arkit
- Lv2
- RxSwift
- visionOS
- designpattern
- Flutter
- ๋ฐฑ์ค
- tableView
- raywenderlich
- Xcode
- UIKit
- SnapKit
- realm
- Today
- Total
๋ชฉ๋กapple (146)
lgvv98
SwiftData in UIKit ์ด๋ฒ์๋ SwiftData๋ฅผ UIKit์์ ์ฌ์ฉํด๋ณด์! CoreData๋ฅผ ํ์ตํ๊ธฐ ์ ์๋ SwiftData๊ฐ ์ง์ง ์ด๋ ค์ ๋๋ฐ, ์ง๊ธ์ ํจ์ฌ ๋ฐฐ์ฐ๊ธฐ ์ฝ๋ค. SwiftData๋ฅผ ์ฌ์ฉํ๋ฉด CoreData์ ๊ฐ๋ ์ ์ผ๋ก ๋ถํฉํ๊ณ ์์ด์ ํ์ตํ๋๋ฐ ๋ ์ฝ๊ฒ ๋๊ปด์ก๋ค. ๋ํ SwiftData๊ฐ ๊ฐ์ง ์ฅ์ ์ด๊ฒ ์ง๋ง, CoreData๋ณด๋ค ๊ฒ์์ด๋ ๋ฑ๋ฑ์ด ๋ ์ค์ํํธ ์ธ์ด์ ์ ์ด์ธ๋ฆฐ๋ค๋ ์ . ๋ค๋ง ๊ณ ๋ คํด์ผํ ์ ์ผ๋ก๋ @objc๋ฅผ ์ฌ์ฉํ๋ ์๋น์ค์ ๊ฒฝ์ฐ์๋ ๋์ ํ๊ธฐ๊ฐ ์กฐ๊ธ ์ด๋ ค์ธ ์ ์๋ค. ์ด๋ฒ ์ค์ต ๊ฒฐ๊ณผ๋ฌผ ์์ - create: ์์ดํ ์ถ๊ฐ - read: ์ ์ฒด ์์ดํ reloadData - update: ํธ๋ฆฌ -> ์ฐํ์ ์ ๋ฌผ๋ก ๋ฐ์ดํฐ ๊ฐฑ์ - delete: ๋ชจ๋ ๋ฐ์ดํฐ ์ญ์ ์ค์ต์ฉ ์ฝ๋..
[iOS] CoreData ์ ๋ฆฌ 2 (์ค์ต) (2/2) 1ํธ์ ์ด๋ก , 2ํธ์์๋ ์ฝ๋๋ฅผ ์์ฑํ๋ฉด์ ์์๋ด ์๋ค. 1ํธ: https://rldd.tistory.com/586 CoreDataSampleCode Core Data๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํ ์ฌ์ ์ค๋น - ํ๋ก์ ํธ ์์ฑ์ ์ด๋ ๊ฒ ์์ฑํ๋ฉด AppDelegate์ SceneDelegate์ ๊ธฐ๋ณธ์ ์ผ๋ก Core Data๋ฅผ ์ํ ์ฝ๋๊ฐ ์ถ๊ฐ๋ฉ๋๋ค. ๋จผ์ SceneDelegate์์๋ ๋ฐฑ๊ทธ๋ผ์ด๋๋ก ๋์ด๊ฐ์๋ ํ์ฌ ์ปจํ ์คํธ๋ฅผ ์ ์ฅํ๊ณ ์์ต๋๋ค. ํด๋น ์ปจํ ์คํธ์ hasChanges ์ฆ ๋ณํ๊ฐ ์๋ค๋ฉด save๋ฅผ ํ๊ณ ์์ต๋๋ค. ๋จผ์ persistentContainer ๋ณ์๋ฅผ ์ดํด๋ด ์๋ค. NSPersistentContainer(name: ... )์ name์์๋ ๋ด๊ฐ ์์ฑํ..
[iOS] CoreData ์ ๋ฆฌ ์ด๋ก (1/2) CoreData์ ๋ํด์ ์์๋ด ์๋ค. 1ํธ์์๋ ๊ฐ๋ ๊ณผ ์ด๋ก ์ ์ค์ ์ผ๋ก ์์ ํ๋ฉฐ, ์ฝ๋ ์ค๋ช ์ 2ํธ์์ ์ด์ด์ง๋๋ค. [iOS] CoreData ์ ๋ฆฌ ์ด๋ก (1/2): https://rldd.tistory.com/587 Core Data๋? - ์ฝ์ฝ์ ๊ฐ๋ฐ ํ๊ฒฝ์ ํตํด ์ ๊ณตํ๋ ์ธ ๋ฉ๋ชจ๋ฆฌ(In-Memory) ๋ฐฉ์์ ๋ฐ์ดํฐ ๊ด๋ฆฌ ํ๋ ์์ํฌ. - ์ด๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ๊ฒฝ๊ณผ ์ ์ฌํ๊ฒ ๋ฐ์ดํฐ CRUD๊ณผ์ ์ ์ํํ ์ ์์. - Apple ์ํ๊ณ ํ๊ฒฝ(iOS, macOS ๋ฑ)์ ์ง์ํ๊ณ objc์ swift์ธ์ด์์ ๋ชจ๋ ์ฌ์ฉํ ์ ์์. - ์ธ ๋ฉ๋ชจ๋ฆฌ ๋ฐฉ์ ๊ธฐ๋ฐ์ด๊ธด ํ๋, ๋ด๋ถ์ ์ผ๋ก๋ SQLite ๊ฐ์ ์๊ตฌ ์ ์ฅ์์ ๋ณด์กฐ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ ์๊ธฐ ๋๋ฌธ์ ์ฑ์ด..
[TCA] HigherOrderReducers (ReusableFavoriting) ๋ชฉ์ฐจ - ๊ฐ๋ ์ค๋ช - ์์ ์ฝ๋ # ๊ฐ๋ ์ค๋ช ์ด๋ฒ์๋ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ํ๋์ ์ปดํฌ๋ํธ๋ฅผ ๋๋ฉ์ธ, ๋ก์ง, ๋ทฐ์ ์ด๋ฅด๊ธฐ๊น์ง ์ด๋ป๊ฒ ์ฒ๋ฆฌํ๋์ง๋ฅผ ์๊ฐ. ์ด๋ฒ ๊ธฐ๋ฅ์ "์ข์์" ๊ธฐ๋ฅ์ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ, ๋ฒํผ ์ก์ ์ ํตํด ์์ ์ ์ํ๋ ๋ณ๊ฒฝ ๊ฐ๋ฅํ๋ค. ํด๋น ๋ฒํผ์ ๋๋ฅด๋ฉด UI์ ์ฆ์ ๋ฐ์๋๊ณ DB๋ฅผ ๋ณ๊ฒฝํ๊ฑฐ๋, API ์์ฒญ์ ํ๋ ๋ฑ ํ์ํ ์์ ์ ์ํํ๊ธฐ ์ํ ํจ๊ณผ๊ฐ ๋ฐ์. ์คํ์ 1์ด๊ฐ ๊ฑธ๋ฆฌ๊ณ 25% ํ๋ฅ ๋ก ์คํจํ๋๋ก ์์ ๋ฅผ ๋ง๋ค์์ผ๋ฉฐ, ์คํจํ ๊ฒฝ์ฐ ์ํ๊ฐ ๋กค๋ฐฑ๋๊ณ ๊ฒฝ๊ณ ์๋ฟ์ด ๋ํ๋จ. # ์์ ์ฝ๋ // MARK: - Reusable favorite component // ๐ 1. ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ FavoriteState๋ฅผ ์ ์ธ st..
[TCA] HigherOrderReducers #1 (Recursion) ๋ชฉ์ฐจ - ์ด๋ฒ ์ฃผ์ ์ ๋ํ ๊ฐ๋ต ์ค๋ช - ์์ ์ฝ๋ # ์ด๋ฒ ์ฃผ์ ์ ๋ํ ๊ฐ๋ต ์ค๋ช ์ด๋ฒ์๋ ์ฌ๊ท๋ฅผ ํตํด View๋ฅผ ๊ด๋ฆฌ ํ๋ ๋ฐฉ๋ฒ์ ์์๋ณผ ์์ # ์์ ์ฝ๋ ์ฃผ์ํ๊ฒ ์ดํด๋ณผ ๋ถ๋ถ 1. State๋ฅผ rows๋ก ๋ค์ ๋ค๊ณ ์์์ผ๋ก์จ Nested ํํ๋ฅผ ๊ตฌ์ฑ 2. Action์๋ ๊ฐ์ ์ฐธ์กฐ๋ฅผ ์ํด indirect enum์ผ๋ก ์ ์ธ 3. Reducer์ forEach(...) { Self() } ํํ๋ก ์ฐธ์กฐ struct Nested: Reducer { struct State: Equatable, Identifiable { let id: UUID var name: String = "" var rows: IdentifiedArrayOf =..
[TCA] Navigation TCA์ Navigation์ ๋ํด์ ๊ณต๋ถํ๊ณ ์ ๋ฆฌํด๋ณด์. ์๋น์ค ๊ฐ๋ฐ์์ ์ฌ์ฉํ๋ ํ๋ฉด์ ํ ๋ฐฉ์์ผ๋ก๋ ๋ช ๊ฐ์ง๊ฐ ์๋๋ฐ, ์ฐ์ ์ ์ผ๋ก ์์ฃผ ์ฌ์ฉํ๋ ๊ฒ๋ค์ ์ ๋ฆฌํ๊ณ , ์ถ๊ฐ์ ์ผ๋ก ํ์ํ ๊ฒ๋ค์ด ์์ ๋๋ง๋ค ํฌ์คํ ์ ์ ๋ฐ์ดํธ ํด๋ณด์! ์ด๋ฒ์ ์์๋ณผ ๋ชฉ์ฐจ! - ์ผ๋ฐ์ ์ธ sheet ํ๋ฉด์ ํ - navigationDestination, popover, sheet ์ฌ์ฉ - NavigationStack (feat. Path & destination) - ์ฌ๋ฌ๊ฐ์ ๋ทฐ๋ฅผ ํ๋ฒ์ ์ด๋์์ผ์ผ ํ ๊ฒฝ์ฐ - struct Path: Reducer { ... } - NavigationStack์ View ๋จ์์ ์ฒ๋ฆฌ - StackElementID - ScreenA - ์ค์ค๋ก dismiss - Scre..