IOS/SwiftUI 6

[SwiftUI] TCA 정리

The Composable Architecture(TCA) 뜻 The Composable Architecture(TCA)는 일관되고 이해할 수 있는 방식으로 어플리케이션을 만들기 위해 탄생한 라이브러리입니다. 합성(Composition), 테스팅(Testing) 그리고 인체 공학(Ergonomics)을 염두에 둔 TCA는 SwiftUI, UIKit을 지원하며 모든 애플 플랫폼(iOS, macOS, tvOS, watchOS)에서 사용 가능합니다. The Composable Architecture 구성 요소 상태(State) 관리 : 간단한 값 타입들로 어플리케이션의 상태를 관리하는 방법, 상태를 공유를 통해 화면에서 일어나는 변화(Mutation)를 다른 화면에서 즉시 관측(Observe)하는 방법을 제공..

IOS/SwiftUI 2023.03.01

[SwiftUI] @StateObject

App의 모델 데이터와 뷰 간의 connection을 만들어 주는 3가지 property wrapper type을 제공한다. ObservedObject EnvironmentObject StateObject StateObject의 개념 관찰 가능한 개체를 인스턴스화하는 속성 래퍼 유형입니다. StateObject의 필요성 SwiftUI는 언제든지 다시 뷰를 생성이 가능하다. -> 주어진 inputs을 가지고 뷰를 이니셜라이징하면 동일한 뷰가 생성이 된다. -> 뷰 안에서 ObservedObject를 만드는 것은 안전하지 않다. 대신에 SwiftUI는 이 목적을 위해 StateObject를 제공해준다. StateObject를 사용하면 뷰안에서 안전하게 ObservedObject 인스턴스를 만들 수 있다. c..

IOS/SwiftUI 2022.06.17

[SwiftUI] SwiftUI에서 UserDefaults를 사용 -> @AppStorage

어플리케이션 설정을 저장하는데 쓰는 UserDefaults 객체이다 State가 바뀔때 State로 UserDefaults를 사용할 것이면 약간의 전처리가 필요하다. 1. UserDefaults propertyWrapper import Foundation import Combine @propertyWrapper struct UserDefault { let key: String let defaultValue: T init(_ key: String, defaultValue: T) { self.key = key self.defaultValue = defaultValue } var wrappedValue: T { get { return UserDefaults.standard.object(forKey: key) ..

IOS/SwiftUI 2022.06.16

[SwiftUI] Coredata 사용해보기

전에 Coredata를 활용하기 위한 기본셋팅으로 CoreDataManager에 대하여 알아 보았습니다.근데 CRUD를 활용하기 위한 Coredata를 사용할려면 어떻게 해야되는지 전체 적으로 알아보도록 합시다.먼저 CRUD를 활용하기 위해 여러 방법이 있습니다.예를 들어 Sqlite,Coredata,Realm 아니면 파일입출력 형식으로도 표현을 할수도 있습니다.각각의 장단점은 다음에 파악하는 것으로 하고 일단 저는 Coredata를 사용해보록 하겠습니다.일단 Coredata를 활용하기 위해서 기본적인 체크를 한번 하도록하겠습니다.먼저 project파일을 생성할때 use coredata를 클릭을 하도록 하겠습니다.그러면 모델 파일이 생성이 되는데 저는 Attributes에 genre,singer,tite..

IOS/SwiftUI 2022.05.04

[SwiftUI] VoiceViewModel 코드 분석하기

앞서 진행한 CoreDataManger에 다음으로 현재 진행한 프로젝트 중 녹음기능이 담겨져있는 VoiceViewModel을 분석해보도록 하겠습니다. 순서는 코드의 플로우대로 진행할 예정입니다.import Foundationimport AVFoundationclass VoiceViewModel : NSObject, ObservableObject , AVAudioPlayerDelegate{ var audioRecorder : AVAudioRecorder! var audioPlayer : AVAudioPlayer! var indexOfPlayer = 0 @Published var isRecording : Bool = false @Published var..

IOS/SwiftUI 2022.05.04