RxSwift (3)
Filtering Operators 이전글에서 살펴봤듯 Observable에 적용하는 모든 메서드는 연산자(Operator)라고 부른다. 이번 편부터는 그중에서도 Observable이 방출하는 이벤트 중 원하는 것만 골라서 통과시키거나 걸러내는 연산자들, 즉 Filtering Operator를 다룬다. ignoreElements, elementAt,...
Filtering Operators 이전글에서 살펴봤듯 Observable에 적용하는 모든 메서드는 연산자(Operator)라고 부른다. 이번 편부터는 그중에서도 Observable이 방출하는 이벤트 중 원하는 것만 골라서 통과시키거나 걸러내는 연산자들, 즉 Filtering Operator를 다룬다. ignoreElements, elementAt,...
내용이 길어질듯 해서 새롭게 작성한다. Traits Trait는 Observable을 특정 상황에 맞게 제한한 변형 타입이다. 방출할 수 있는 이벤트 종류를 미리 좁혀놓아서, “이 스트림은 값을 여러 번 방출하지 않고 딱 한 번만 결과를 낸다” 같은 의도를 타입 자체로 표현할 수 있다. RxSwift에는 크게 세 가지 Trait가 있다. 1....
구매해둔 Udemy 강의중 RxSwift 강의가 너무 오래전이기도하고 Combine을 항상 사용해와서 그냥 냅두려다가 강의 내용도 7시간 정도 밖에 안되고 개념 자체는 Combine과 유사해서 그래도 간단하게 알아두면 좋을듯 해서 내용을 적어보도록 한다. ReactiveX 공식 사이트에서 RxSwift를 확인 할 수 있다. 그리고 RxSwift의 ...
km 스플릿 음성 안내는 이미 붙였는데, 원래 계획했던 오디오 콜아웃엔 시작 카운트다운이랑 터치다운 때 안내도 포함돼 있었다. 그리고 v1.2b 로드맵에 남은 큰 항목이 로컬 기록 CloudKit 백업이라 먼저 어떻게 할지 생각을 해보고 구현을 해보기로한다. 오디오 콜아웃 남은 부분 TakeoffView엔 이미 ROTATE 버튼을 누르면 3, ...
워치는 러닝 종료 버튼이 2초 길게 눌러야 확인되는 방식인데, 아이폰 PFDView의 TOUCHDOWN 버튼은 그냥 한 번 탭하면 바로 종료된다. 뛰다가 화면을 잘못 건드리면 러닝이 그대로 끝나버리는 문제라 아이폰도 같은 방식으로 바꿨다. 겸사겸사 시뮬레이터로 오래 뛰어보다가 발견한, 스플릿 목록이 하단 탭바에 가려지는 문제도 같이 고쳤고, Fligh...
이전글에서 km 스플릿 기능을 다 붙였다. 로드맵상 다음 순서는 이 스플릿이 끊길 때마다 화면을 안 봐도 페이스/심박/케이던스를 음성으로 읽어주는 기능이다. 이제 이 과정을 기록해본다 스플릿 재활용 이전글에 적었던 recordSplitSample(at:)을 다시 보면, while 루프 안에서 1km 경계를 넘을 때마다 그 구간의 평균 페이스/...
이전글에서 심박 미션 버그를 다 잡고, 이번엔 다음 순서였던 km 단위 스플릿 기능으로 넘어왔다. 러닝 하나를 1km마다 끊어서 그 구간 페이스/심박/케이던스를 따로 기록하는 기능이다. 케이던스도 심박처럼 받아두기 HealthCenter가 지금까지 심박만 들고 있었는데, 스플릿엔 케이던스도 필요해서 똑같은 방식으로 하나 더 추가했다. acto...
이전글에서 1.1 핫픽스가 승인나고, 다시 심박 기능 브랜치로 돌아왔다. 버전을 1.2로 올리고(핫픽스가 이미 1.1을 써버려서), 핫픽스에서 고친 내용도 이 브랜치에 옮겨왔다. 그러고 나서 지금까지 한 번도 안 해본 조합으로 테스트를 해봤다. 아이폰이 주도하고 워치가 미러링하는 상태로, 심박 기준 Mission Flight를 뛰어본 거다. 여기서 ...
심박 기반 러닝 모드를 만들다가 이전글에서 reset()이 modeAData를 지우는 진짜 원인을 찾았다. 확인해보니 이 문제는 지금 작업 중인 브랜치에서 생긴 게 아니라 원래 배포된 버전(v1.0)에도 그대로 있는 문제였다. 지금 실제로 앱을 쓰고 있는 사람들한테는 Mission Flight GPWS가 페이스든 심박이든 계속 안 뜨고 있었다는 뜻...
이번엔 심박 기반 러닝 모드를 넣어보려고 한다. 지금까지 Mission Flight는 페이스 기준으로만 목표를 설정했는데, 지인이 요즘은 페이스 대신 심박수를 기준으로 훈련하는 방식도 많이 쓴다고 추천해줬다. 페이스는 그날 컨디션이나 날씨, 오르막/내리막 같은 지형에 따라 쉽게 흔들리는데, 심박수는 몸이 실제로 받는 부하를 좀 더 직접적으로 보여준다...