GitExplorer (4)
Day 4: 자동 갱신 & 브릿지 미션 (Task) 자동으로 새로고침하기 사용자가 직접 새로고침을 누르지 않아도 정해진 주기에 맞춰 스스로 최신 상태 데이터를 다시 불러오는 심장 박동 같은 백그라운드 스트림을 구축할 것 연타 방지하기 유저가 수동 새로고침을 연타할 경우를 대비하여,...
Day 4: 자동 갱신 & 브릿지 미션 (Task) 자동으로 새로고침하기 사용자가 직접 새로고침을 누르지 않아도 정해진 주기에 맞춰 스스로 최신 상태 데이터를 다시 불러오는 심장 박동 같은 백그라운드 스트림을 구축할 것 연타 방지하기 유저가 수동 새로고침을 연타할 경우를 대비하여,...
Day 3: 즐겨찾기 만들기 미션 (Task) 버튼 액션을 스트림으로 바꾸기 즐겨찾기 추가 및 삭제 버튼 클릭이라는 사용자의 물리적 터치 액션을 단순한 변수 조작이 아닌 순간적인 이벤트 신호 스트림으로 변환하여 시스템에 흘려보낼 것 즐겨찾기 목록 누적 관리하기 기존에 즐겨찾기된 목록이라는...
Day 2: 프로필 화면 만들기 미션 (Task) 화면 상태 나누기 유저를 선택하여 프로필 상세 화면으로 이동 시, 화면의 현재 상태를 로딩 중, 성공, 실패로 명확히 분리할 것 데이터 상태에 따라 UI가 즉각적으로 변화하는 반응형 환경을 구축할 것 여러 API 한번에 불러오기 ...
Project 시작 Combine을 오랜만에 사용할 겸 간단한 프로젝트를 만든다. 검색을 통해 GitHub 사용자를 찾아서, 해당 유저의 Repository도 보고 Following 기능까지 하는 간단한 앱이지만, Combine을 사용하면서 여러 Data Streaming이 필요한 작업이라 쉬우면서도 쉽지 않을? 그런 프로젝트이다. 4일 계획으로...
Combine에서 자주 사용하는 오퍼레이터를 카테고리별로 정리한다. Transforming 값의 형태를 바꾸거나 새로운 Publisher로 전환한다. map 각 값을 다른 타입이나 형태로 변환한다. [1, 2, 3].publisher .map { $0 * 10 } .sink { print($0) } // 10 // 20 //...
MMAInfoCurrentValueApp (PassthroughSubject) 이번엔 PassthroughSubject를 사용한 앱을 만든다. Modeling struct MMAFighter: Codable, Identifiable { var id = UUID() let name:String let fightTeam...
Data Streaming: PassthroughSubject의 도입 지금까지 만든 방식은 진정한 의미의 데이터 스트리밍(Data Streaming)이 아니다. API를 한 번 호출하고 결과를 통째로 한 번 받고 끝나는 단발성 작업(Future)이었을 뿐이다. 하지만 이번 프로젝트에서는 PassthroughSubject를 도입한다. 무엇이 다른...
진짜 Fighter Service 만들기 이전글에서 Future에 너무 매몰이 되어서 글이 너무 길어지는 바람에 새로 적고 제대로 시작해본다. 진짜 fetchAllFightersData 만들기 private func fetchAllFightersData() -> AnyPublisher<Data, Error> { Futu...
MMA Information App 만들어보기 UI는 크게 중요하지 않아서 대충 만든다. Using Combine for Your App’s Asynchronous Code Docs 이거 한번 읽어보면 좋다. Modeling MMAFighters.json 파일을 보면 { "name": "Jon Jones", "fightTeam...
이전에 정리를 한적이 있긴한데, 강의에 적힌걸 번역해서 여기에 적어본다. 내용이 꽤나 많을지도? Combine이란? Combine은 비동기 값을 데이터 스트림으로 처리하는 Apple의 프레임워크다. 4가지 핵심 구성요소가 있다. Publisher – 시간이 지남에 따라 값을 생산하는 소스 (네트워크 요청, 타이머, Subject 등) ...