드디어 SensorKit에 기록된 데이터를 페치할 수 있게 되면서 쌓여있던 응어리가 내려가는 기분이 들었다.. 너무 개운하고 재밌었다.. 이 맛에 계속 개발을 하는 건가 싶을 정도로 데이터가 들어오는 순간에 얼마나 기쁘던지.. SensorKit을 구현하면서 레퍼런스 할 자료가 많이 부족했기 때문에 맨땅에 헤딩하면서 많이 배운 것 같다! 공식문서를 읽는 법도 좀 배웠고 헤맨 만큼 내땅이라는 말이 뭔지 조금 알게 되는 순간이었다. 오늘은 어떤 로직을 구성해서 데이터를 가져오는지 기록으로 남겨두려고 한다. 다양한 데이터를 가져와서 페치하고 있지만 예시를 활용하기 위해 디바이스 정보를 가져오는 로직을 구현해보도록 하자 https://developer.apple.com/documentation/sensorkit/..
ShareRun을 만들면서 TCA를 활용해 구현하는 방식 중 State를 변경하는 로직과 Action이 발생할 때 상태 변화 및 이팩트를 처리하는 메서드를 정의한다.@Reducerstruct RunningFeature { @ObservableState struct RunningState: Equatable { var record: RunningRecord? // 러닝 기록을 저장할 상태 var isRunning: Bool = false // 러닝 중인지 여부 var currentLocation: CLLocationCoordinate2D? // 현재 위치 var mapRegion: MKCoordinateRegion? // 지도에 표시할 영..
이번에 SwiftUI , TCA를 활용하면서 개인 프로젝트를 진행 중인데 이 과정에서 왜 사용하고 있었는지 의문이었던 부분을 기록으로 남겨두려고 한다. Equatable먼저 Swift에서 Equatable 프로토콜을 사용하는 이유는 두 객체를 비교해서 동일한지 여부를 판단할 수 있게 해주기 때문에 Equatable 채택해 == 연산자를 구현하는 방식으로 두 객체를 비교하게 된다. Swift 컴파일러는 struct나 enum이 Equatable을 채택할 때 모든 저장 프로퍼티가 Equatable를 준수하면 자동으로 == 연산자를 구현해주기 떄문에 직접 구현하지 않아도 돼서 매우 편리한 방법이다.import ComposableArchitectureimport MapKitstruct RunningState:..
SwiftUI는 @State , @ObservedObject 등 프로퍼티 래퍼를 통해 양방향 바인딩을 구현하고, State 관리를 간편하게 할 수 있는 기능을 제공한다. 추가적으로 Binding은 @State 프로퍼티 래퍼와 함께 View간 상호 작용을 위해 사용되고 이는 양방향 통신을 가능하게 한다. Binding을 사용하므로써 State 변화를 UI에 즉시 반영하면서 코드 작성이 간결하다는 장점이 있지만 State 관리가 복잡해질수록 변화에 따른 Side Effects를 관리하는데 어려움이 있다. 이런 이유로 전체 비즈니스 로직을 담당하고 내부 State 변화를 관리하는 TCA에서는 SwiftUI의 기본 @Binding 래퍼로 State를 관리하기에 적합하지 않을 수 있다. 이러한 문제를 해결하기 위..
1. 권한 설정 주요 이슈https://forums.developer.apple.com/forums/thread/655882 Unable to request authorization fo… | Apple Developer ForumsI am attempting to test out SensorKit in Xcode 12 Beta 3 and haven't been able to request authorization for a set of sensors using SRSensorReader.requestAuthorization(sensors:). I've added keys to my Info.plist after seeing error messages that they were miforums.deve..
Effect의 구현과 활용 - Action에 따른 결과 : EffectEffect는 Reducer의 액션이 반환하는 타입으로, 액션을 거친 모든 결과들을 칭한다. 그 중 외부에서 어떠한 처리가 일어나서 얻게된 예상과 다른 결과물들을 Side Effect라고 한다. Effect는 외부 시스템과 상호작용하는 작업을 나타내는데, 이를 통해 앱의 State가 변경된다. State를 직접 변경할 때의 Action과 달리, Effect는 비동기적인 작업을 수행하고 그 결과를 Action으로 반환하여 State에 반영하기 위해 사용 된다. 즉, Effect는 특정 Action을 실행한 후 그 결과에 따라 새로운 Action을 생성하고 이를 통해 State를 업데이트하는 역할을 담당한다. 네트워크 호출, 데이터 로딩,..