프로젝트14 [SUSU] TCA로 여러개의 병렬로 Network요청 보내고 한번에 View Update 하기 (Using Isolated Task Manager) 들어가는 말화면 진입시 여러가지 API요청을 병렬적으로 수행했야하는 과제가 있습니다. TCA에서 비동기는 Effect의 Operation인 run 함수를 통해서 비동기 함수를 실행할 수 있습니다. 이를 통해서 서버를 통해 정보를 가져올 수 있습니다. 또한 run Operation 안쪽에 있는 send를 통해서 다른 Action을 호출 할 수 있습니다. 출처: TCA Documentation var body: some Reducer { Reduce { state, action in // code... case .numberFactButtonTapped: state.isNumberFactRequestInFlight = true state.numberFact = nil.. 2024. 8. 24. [SUSU] SwiftUI로 Custom Apple Login Button 만들기 문제 상황: SwiftUI 로 Custom Apple Login Button을 만들어야 하는 상황이 있었습니다. Apple Login 을 위해서 두가지 방법이 있습니다.1. delegate 을 채택하여 구현하기2. SwiftUI의 직접 완성된 뷰를 통해 구현하기 이중 우리는 2번 SwiftUI에 대해서 말씀 드리려 합니다. 일단 코드 먼저 보면 다음과 같습니다. SwiftUI로 버튼을 만면 화면도 잘 나옵니다. SignInWithAppleButton(.continue) { request in // Request Code request.requestedScopes = [.fullName, .email] } onCompletion: { result in switch result { .. 2024. 6. 28. [SUSU] 수수앱에서 Navigation 방식을 정의하기 part 3(TCA With Navigation) Velog 에서 최적화로 볼 수 있습니다.현재 상황: Part2의 문제점과거 Navigation Architeture는 SwiftUI에서 UIKit ViewController를 끌어오는 방식으로 아키텍쳐를 작성했습니다. 하지만 이것이 TCA와 SwiftUI가 바라는 방식은 아니라고 생각했습니다. 그 이유는 다음과 같습니다.SwiftUI View는 class가 아닌 structSwiftUI뷰는 class가 아닌 struct입니다. struct의 가장 큰 특징중 하나는 상속이 되지 않는다는 점 입니다. 그렇기 때문에 뷰를 만들거나 혹은 만들어진 뷰를 땡겨쓸 때 구체타입에 대해서 알아야 합니다. 이를 보충 설명하면 UIViewController만 있으면 되었던 UIKit과 달리 some View라는 구체 타입.. 2024. 6. 15. [SUSU] 수수앱에서 Navigation 방식을 정의하기 part 2 (TCA With Navigation) Velog에서 최적화로 볼 수 있습니다.현재 상황: Part1의 문제점과거 파트에서 다룬 가장 큰 문제는 가장 상위 뷰에서 모든 Navigation로직을 정의해주는 일 이었습니다. 이렇게 가장 상위 뷰에 네비게이션 로직을 정의 하는 것은 개발하는데에 있어서 매우 불편한 상황을 자주 맞딱뜨렸습니다. 불편한 상황은 다음과 같습니다.읽기 어려운 코드과거에 어떤 코드를 어떻게 짰는지 읽기 위해서 Navigation Reducer를 키면 개발하고 싶은 욕구가 사라질 정도로, 코드를 읽는 것이 너무너무 어려웠습니다.TopRedcuer에 넌 너무 많은 것을 알고 있어TopReducer가 너무 무겁다는 생각을 했습니다. TopReducer가 ChildReducer에 State를 생성해주고 이를 Path에 넣어주었습니다.. 2024. 6. 15. [SUSU] 수수앱에서 Navigation 방식을 정의하기 part 1 (TCA With Navigation) Velog에서 최적화로 보실 수 있습니다. [SUSU] 수수앱에서 Navigation 방식을 정의하기 part 1 (TCA With Navigation)이 글은 TCA를 활용하면서 SUSU가 달려온 Navigation방식의 변천에 대해서 소개하는 글 입니다. SwiftUI특성상 Navigation을 정의하는 것이 결코 쉬운 일이 아니였습니다. 또한 SUSU팀이 도착한 종착역이 옳velog.io머리말이 글은 TCA를 활용하면서 SUSU가 달려온 Navigation방식의 변천에 대해서 소개하는 글 입니다. SwiftUI특성상 Navigation을 정의하는 것이 결코 쉬운 일이 아니였습니다. 또한 SUSU팀이 도착한 종착역이 옳다고 할 수 없습니다. 그렇기에 비판적인 시각으로 바라봐주시면 감사합니다.상위 Re.. 2024. 6. 15. [MealGok_개인 앱] 특정 고객에게만 일어나는 버그를 잡기 위해서, 고객의 기기로 디버깅 해보기 (트러블 슈팅) 문제 상황 밀꼭 개인 어플리케이션에서 심각한 문제가 발생했습니다. UserNotification에서 사용자에게 Authroziation을 요청하는 코드가 주석처리 되었던 버그를 발견했습니다. 그리고 이를 해결하고 내부테스팅 이후에 앱을 배포하였습니다. 하지만 유저가 어플리케이션에서 crush가 난다고 하였습니다. 유저는 "프로필 화면 클릭시 앱이 강제종료된다" 라는 말을 덭붙였습니다. 일단 프로필 화면에서 왜 강제종료 되는지에 대해서 고민하였습니다. 자문 구하기(버그를 재현해보기)이런 상황이 처음이라 처음에는 맨붕이 와서, 자문을 구해봤습니다. 공통된 의견으로 버그를 고치기 위해서는 "재현"이라는 키워드 였습니다. 이 버그가 어떤 상황에서 발생하는지만 알면, 버그를 수정할 수 있을 것 같았습니.. 2024. 6. 6. 이전 1 2 3 다음