RunWay (6) ViewModel과 View 데이터 흐름 연결
PFD 실시간 데이터 표시 PFDView가 요구하는 데이터 Mock UI 기준으로 PFDView에 하드코딩된 값들을 추려보면 아래와 같다. 현재 페이스 (5'32"), 평균 페이스 누적 거리 (8.42 km) 고도 (0.42 km) 경과 시간 (48:12) 방향 (N 180°) 이 중 ADI의 경사도(-1.2%)와 수직속...
PFD 실시간 데이터 표시 PFDView가 요구하는 데이터 Mock UI 기준으로 PFDView에 하드코딩된 값들을 추려보면 아래와 같다. 현재 페이스 (5'32"), 평균 페이스 누적 거리 (8.42 km) 고도 (0.42 km) 경과 시간 (48:12) 방향 (N 180°) 이 중 ADI의 경사도(-1.2%)와 수직속...
블로그를 오래 운영하다 보면 이미지가 깨지기 시작한다. 처음에 깃블로그 이전에 만들었던 velog에서 가져온 이미지, esdrop 이미지, 그리고 GitHub issue에 드래그해서 올렸던 이미지 등.. 이 이미지들은 호스팅하는 쪽이 운영 중단하거나 사라질 가능성이 항상 존재해왔다. 오늘 하루를 통째로 써서 정리했다. python 안쓴지 오래라 자...
생각보다 빨리 끝나서 오늘 미리 좀 해보려고 한다. 아무래도 Actor쪽이다보니 빨리하는게 좋다고 판단했다. Actor의 경우 Swift Concurrency & 격리(Isolation) 핵심 개념 정리, 미니프로젝트 등등 언급을 많이 했어서 패스하도록 한다. RunningCenter Actor 기본 구조 구현 RunWay에서는 GPS,...
Swift Concurrency & 격리(Isolation) 핵심 개념 정리 Matt Massicotte의 강연을 바탕으로 정리한 Swift Concurrency 가이드. 단순한 문법 습득을 넘어, 왜 이렇게 설계되었는지를 이해하는 것을 목표로 한다. 1. 왜 Swift Concurrency인가? 관습(Convention)에서 ...
RunViewModel 만들기 현재까지 LocationService와 HealthKitService를 각각 구현했다. 하지만 View가 이 서비스들을 직접 들고 있으면 데이터 수집과 화면 표시가 한곳에 섞이게 된다. 또한 이후 위치 정보와 HealthKit 데이터를 조합해야 하는 시점이 오면 View에서 처리하기에는 책임이 커지게 된다. 그래서 R...
HealthKitService 만들기 이전글에서 구현한 CoreLocation만큼 중요한 기능이다. 여기도 나중에 참고하면 좋게 하기위해 나름 자세하게 써보려 한다. 1. HealthKit 추가하기 이렇게 추가를 해준다. 2. Info.plist에 추가 이젠 수동으로 info를 관리하니 예전처럼 추가만 해주면 된다. 이전글에 있...
LocationService 만들기 러닝앱에서 빠지면 안되는 가장 중요한 요소이다. 오늘은 이걸 만들고 mockui하나 만들어서 시뮬레이터와, 실기기 테스트를 할 예정 다만 Swift6로 만들기때문에 초기에 잘 해놔야할 것 같다. 이미 알고 있는 부분이 많긴하지만, 그래도 디테일하게 하나 하나 작성을 하면서 가보려 한다. 이유는 그냥 나중에 ...
시작하게 된 이유 Swift Concurrency를 공부하면서 Actor를 제대로 써보고 싶었다. 단순히 @MainActor를 클래스에 붙이는 것 말고, 별도의 격리 영역을 만들어서 데이터를 처리하는 구조를 직접 만들어보고 싶었다. 미니 프로젝트 목표 Timer로 임의의 데이터를 생성해서 Actor에 흘려보내고, 그 결과를 ViewModel...
개인 장기? 프로젝트를 진행해본다. 1. 프로젝트 만들기 위의 표처럼 기본적인 세팅을 하고 들어간다. 사실 개인적으로 여기서 가장 큰 핵심은 Swift6을 사용했다는 점이다. 확실히 Swift 5를 쓰다가 최근에 Swift 6을 접하니 Concurrency부분이 상당히 빡셌다. 즉 그만큼 철저한 Thread 관리가 필요하다는걸 느꼈는데, ...
우선 ReadMe에 아래와 같이 보완사항에 대해서 리스트를 적었었다. 보완해야 할 점 iOS 앱 ObservableObject + @Published → @Observable 마이그레이션 ProfileViewModel 로딩/성공/실패 상태 관리 추가 FavoriteViewModel → scan 으로 리팩토링 FavoritesView...