프로젝트/수수-경조사비 관리 서비스9 [수수] Swift 6.0 마이그레이션 후기 안녕하세요 수수 어플리케이션 iOS개발자 정다함 입니다. 이번 2024-09-17기준으로 Swift6.0이 업데이트 되었습니다. 당장은 Swift 5버전으로 어플리케이션을 배포하고 유지보수해도 상관 없지만, 언젠가는 해야하는 일이라고 생각했습니다. 그래서 이번 기회에 마이그레이션을 진행해 보았습니다. 글은 Swift 6.0 마이그레이션을 하면서 정리했던 생각과, 왜 이런 코드를 작성했는지에 대한 흐름을 보여줄 예정입니다. 1. 싱글톤 객체를 Sendable로프로젝트에서 사용하는 싱글톤 객체를 컴파일 하면 다음과 같은 에러가 발생합니다. 로컬 캐시나 프로젝트에서 쓰는 모듈을 싱글톤을 활용한 경우가 있는데 이들을 모두 수정해주어야 합니다. Static property 'shared' is not con.. 2024. 10. 4. [수수] iOS에서 에러 Log를 Discord + FireBase로 전달(Discord를 통한 Log 저장 방식 공유) SUSU를 개발하던 도중 한 이메일이 도착했습니다. 메일은 정확한 버그에 대해서 설명을 해주셨습니다. 검색 기능이 동작하지 않는 버그였는데, 버그를 재현 할 수 없었습니다. 즉 어떤 방식으로 왜 버그가 발생했는지에 대해서 명확한 분석을 하지 못하였습니다. 그래서 이를 해결하고자 Log를 외부 서버로 저장하자 라는 생각을 하였습니다. 그래서 서버쪽에 버그를 아카이브 하는건 어떨지에 대해서 물어봤습니다. 당연히 API만들 어줄 것으로 생각했지만, 더 좋은 해결 방법을 얻을 수 있었습니다. 바로 업무에 사용하는 메신저 플래폼을 활용하여 버그를 아카이브하는 방법을 선택했습니다. 1. 통합 로깅 시스템 구축개발자들은 각 Object혹은 function에 적절한 do try catch 를 활용하여 Error를.. 2024. 9. 26. [수수] iOS 4개월치 회고, 열길 물속은 알아도 한길 사람속은 모른다. 옥수수 팀에 들어가서, 수수 어플리케이션을 만들고 있습니다. 오늘은 그 어플리케이션을 만들면서 느꼈던 것들에 대해서 회고를 하려 합니다. 1. 열길 물속은 알아도 한길 사람속은 모른다. (iOS팀원의 연속 탈주로 인한 팀이 아닌 개인이 되버린...)프로젝트를 진행하면서 iOS개발자들이 대거 이탈하였습니다. 3명이서 시작한 팀은 몇번의 증원과 탈주가 있었습니다. 이렇게 몇번을 반복하니 결국 팀에 남은 iOS개발자는 저 혼자 남게 되었습니다. 팀원들은 각자 저마다의 사정으로 팀을 나가게 되었고, 나간다는 소식을 듣고 나가기 까지 걸린 시간은 반나절도 안되었습니다.(당일통보 ㅠㅠ) 팀끼리 상의 없이 나가서 속상하고 분노도 차올랐습니다. 그렇게 절망과 원망의 시간이 흐르고 감정이 무뎌지는 데 까지는 얼.. 2024. 9. 8. [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. 이전 1 2 다음