Async/Await (1)
1. Concurrency ?
Swift를 하다보면 중간에 배우게 되는게 Concurrency 이다.
그렇다면 Concurrency란 도대체 무엇일까?
사전적 의미로는 동시성이다.
Swift에서는 간단하게 정의하면 여러가지 일을 같은 시간에 수행한다.
Docs에도 있으니 한번 읽어 보는것을 추천.
WWDC도 같이 봐두면 좋을듯하다.
이미지출처: Medium
1.1 왜 필요한가?
우리가 어떤 이미지를 다운로드를 한다고 하면, 만약 Main Thread에서 이미지를 다운로드 하게 되면
이런식으로의 작업이 이루어지게 된다.
즉, Main Thread에서 전부 순차적으로 시행이 되기때문에, ...
BookStore (3)
1. CoreData
1. Modeling
그냥 Document의 내용 그대로 하면 될것같다.
최근 본내역도 클릭했을때 DetailView로 연동할지말지는 고민을 해봐야할것같다.
이렇게 만들어준다.
여기서도 주의할 점이라면 authors가 배열이 아닌 String 이라는 것에 초점을 둬야한다.
CoreData의 경우 이전에도 언급했지만
이걸통해서 만들게되면 코드로도 모델링이 가능하다.
2. CoreData ViewModel 구성
MarkedList에는 SwiftData를 썼으니 최근본 내역에서는 CoreData를 사용해보려 한다.
검색을하고난뒤 도서를 탭했을때 탭한 도서에 대해서 보여주는것...
BookStore (2)
1. DetailView
List에 뜨는 내용을 클릭했을때 상세페이지가 보여지는 화면이다.
ScrollView가 핵심이다.
여기엔 제목, 저자, 내용, 이미지, 버튼(닫기, 담기) 이렇게 구성을 하면 될것같다.
@State var title: String = ""
@State var author: String = ""
@State var imageUrl: String = ""
@State var content: String = ""
@State var price: Int = 0
var body: some View {
VStack {
...
BookStore (1)
UI 구성
이렇게 구성을 한다.
좌측 부터 1, 3, 2 으로 하여 UI 구성을 해본다.
1. MainView 구성
첫번째 화면이고 SearchBar, Grid, list가 UIComponent의 Point이다.
NavigationStack {
VStack {
VStack(alignment: .leading) {
Text("최근 본 책")
.font(.system(size: 25))
.fontWeight(.bold)
...
Final Remind (1)
1. 파이널 프로젝트 - 지도 기능 리마인드
이전에 했던 파이널 프로젝트에 대해서 코드 리마인드를 좀 하면서 UIKit감각도 좀 되살릴겸 해보려고한다.
아마도 기능 위주로 챕터를 나눠서 진행을 할 예정
기능은 크게 가입(로그인), 추천, 지도, 가게, 채팅, 마이페이지 이렇게 크게 6개로 나뉘게 된다.
오늘 다뤄볼 주제는 지도이다.
지도는 내가 다룬 파트는 아니지만 이전에 KickBoard 앱을 만들때 지도를 다뤄봤기에 코드에 크게 거부감은 없다.
2. UI 구성
2-1. 지도 화면 UI 구조
지도 화면은 MapVC와 이를 구성하는 MapView로 나뉜다.
2-2. 계층 구조
MapV...
(Deep Dive) Dependency Injection
이전에 개인과제를 하면서 또는 마지막 프로젝트를 하면서 튜터님께 들었던건 의존성 주입(Dependency Injection)을 해보는게 어떻겠냐? 라는 것이었다.
1. 의존성 주입이란?
그러면 의존성 주입이 뭔지 알아봐야한다.
위키에서는 의존성 주입을 다음과 같의 정의한다.
내용이 길어 이미지로 한다.
의존성 주입에 관한 간단한 이미지는
이게 가장 적합해 보인다.
1-1. 의존성 주입의 장단점
의존성 주입은 객체 간의 의존 관계를 외부에서 주입해주는 설계 패턴이다. 의존성 주입은 다음과 같은 장점을 제공한다:
테스트 용이성: 외부에서 주입된 의존성을 Mock으로 교체할 수 있어 단위 테스...
SwiftUI 상태 관리 및 데이터 저장 비교 - @StateObject, @ObservedObject, CoreData, SwiftData
어제 @ObservableObject, @StateObject와 관련된 글을 작성하면서 뭔가 테스트를 해보고싶어서 간단한 앱을 하나 만들어보려한다.
장바구니 앱이며, https://dummyjson.com/products/1 사이트를 사용해서 DummyData가 있는 api를 호출하여 맘에드는 것을 담고,
장바구니를 초기화할때 @ObservableObject, @StateObject의 차이를 통해 보여지는 화면이 다를것으로 판단이 들어서 그걸 확인해보려한다.
우선 파일구조는 다음과 같다.
1. 모델링
struct WishModel: Codable {
let id: Int
let tit...
(Deep Dive) @ObservedObject vs @StateObject
@ObservedObject vs @StateObject 이부분은 좀 더 자세히 알아봐야할것같아서 이렇게 새롭게 글을 작성한다
코드 예시는 여기를 참고하여 작성을 한다.
@ObservedObject vs @StateObject
우선 둘의 공통점은 ObservableObject 프로토콜을 따른다는 것이다.
그리고 지금 아래 코드를 보면 viewModel에 대해 Wrapper를 다르게 했는데 이렇게 해도 실행 결과는 같다.
final class CounterViewModel: ObservableObject {
@Published var count = 0
func incrementCounte...
631 post articles, 79 pages.