iOS/SwiftUI

    [SwiftUI] Core Data를 이용한 데이터 CRUD (iCalories)

    그동안 궁금했던 점 : 앱을 껐다 켜도 내가 데이터를 추가, 수정, 삭제한 내역이 저장되게 하려면 어떻게 해야 할까? Core Data를 이용하면 이게 가능했다. 간단한 예시를 통해 Core Data의 핵심을 살펴보자 Data Model 파일 생성 Add Entity & Add Attribute Data Controller 파일 생성 ( Core Data를 불러오고 재가공하는 함수 코드가 담긴 파일. 일종의 ViewModel 역할을 하는듯? ) App 파일에서 Data를 이 플젝 전역에 뿌려주기 View 파일 생성 & 코딩 1. Data Model 파일 생성 처음에 Use Core Data 체크 안해도 new file을 통해 Data Model 파일을 생성할 수 있다. 생성한 후, 2. Add Entit..

    [SwiftUI] iOS App Dev Tutorial에서 Data Update 파트 간단 정리

    그동안 내가 궁금해했던 CRUD중 data를 Update하는 파트를 정리해보자! 우선 흐름을 먼저 잡아보자 DetailEditView 생성 기존 data 불러와서 DetailEditView에도 띄우기 데이터 수정 수정된 데이터 저장 기존 View에 갱신된 데이터로 띄우기 (사실 4까지 잘 되면 5는 자동으로 됨. 그냥 저장된 데이터를 불러오는 코드이므로) 각 흐름에 대한 key를 정리해보자 쓰이는 코드들 : [ TextField, 이미 만들어놓은 PickerView, Slider의 value값, 새로운 멤버 append ] DetailView에서 @State로 선언된 data -> DetailEditView에서 @Binding wrapper로 받는다 (& 데이터 타입 선언) $(바인딩)으로 각각 valu..

    [SwiftUI] Making Classes Observable

    *이 글을 애플 공식문서를 번역한 글입니다. Working with Reference Types 우리는 프로퍼티의 SOT를 식별하기 위해 @State를 썼다. 하지만 @State wrapper는 오직 value type(값 타입)에서만 적용된다. 값 타입은 Struct, Enum(구조체, 열거형)을 말한다. 그래서 SwiftUI는 SOT를 참조타입으로 선언하기 위한 프로퍼티 wrapper를 제공한다 : @ObservedObject, @StateObject, @EnvironmentObject 이 wrapper들을 사용하기 위해서는, 우리의 class를 observable하게 만들어줘야 한다 Making a Class Observable ObservableObject 프로토콜을 통해 class를 observ..

    [SwiftUI] Managing Data Flow Between Views

    *이 글은 SwiftUI 공식문서를 번역한 글입니다. Source of Truth 앱을 사용할 때, 저장되어있는 정보들이 복사되는 형식(여러 개의 복사본이 생성되는 형식)을 따르면 정보에 대한 여러 복사본들의 통일성을 유지하기가 힘들어진다. 이로 인해 야기되는 Inconsistency는 여러 버그들을 낳는다. 그래서 이를 막기 위해 source of truth(각 data가 저장되어 있는 곳. 주소) 개념을 사용한다. data는 하나의 위치(source of truth)에 저장되고, data가 필요한 view들은 이 주소에 접근할 수 있다. 우리가 이 source of truth를 생성할 수 있다. 이 source들을 어떻게, 어디다가 정의하고 생성하는지는 이 data가 여러 뷰들 사이에 공유되는 것인지..

    [SwiftUI] Design Pattern : MVVM

    SwiftUI에서 MVVM 패턴은 불필요한 것이란 얘기가 많다. MVVM 패턴은 View와 Model 사이에서 데이터를 주고 받을 때 ViewModel을 사용하는 패턴인데, SwiftUI에서는 SwiftUI.View에 ViewModel의 data binding이 포함되어 있기 때문이다. 그렇기 때문에 SwiftUI에서 ViewModel을 쓰는 것은 불필요한 레이어를 하나 더 끼워 넣는 꼴이기 때문에 불필요하다는 얘기가 많다. 하지만, Swift를 공부하는 입장이라면 적어도 MVVM 패턴이 어떤 것인지 알아야 할 필요가 있기 때문에 MVVM 패턴에 대해 알아보도록 하겠다. Model + View + ViewModel MVVM은 Model, View, ViewModel로 구성된 design pattern이다..