
조금 시간이 지났지만, 제가 현재 진행하고 있는 프로젝트에 적용했던 클린 아키텍처에 대해서 소개해드리고자 합니다. 고고! 클린 아키텍처우선, 클린 아키텍처란 무엇일까요? 클린 아키텍처란 로버트 C. 마틴이 제안한 시스템 아키텍처로, 시스템의 각 요소들을 명확하게 분리하고 유연하게 연결될 수 있도록 디자인하는 아키텍처입니다. 클린 아키텍처의 이점은 다음과 같습니다.- 비즈니스 로직의 재활용성이 높아짐.- 각각 분리된 계층의 역할과 책임이 명확해짐에 따라 코드 응집도가 높아짐.- 책임과 구조가 명확히 나눠져서 개발속도가 빨라지고, 테스트에 용이해짐. - 백엔드가 내려주는 데이터와 프론트엔드가 관심있는 데이터를 분리함으로써 서로의 관심사 분리가 쉬워짐.- 부수적인 효과로 서버의 잘못된 response 에 대한..

저번편 Moya 에러 정리에 이어서 이번엔 진행중인 프로젝트 내부 에러 핸들링을 리팩토링을 해보고자 합니다. 혹시 저번글을 안보셨다면,, 한번 보셔도 좋을듯합니다! [iOS] Moya 에러 정리 [iOS] Moya 에러 정리현재 프로젝트에서 Moya 를 사용하고 네트워크 에러 또한 Moya 에서 정의한대로 사용하고 있는데요. 프로젝트를 진행하다 돌아보니 Moya 에서 정의한 에러들을 정확하게 알지 못한다고 느꼈습니다.gobans.tistory.com 그럼 리팩토링 고고! 에러 핸들링 구조현재 프로젝트의 에러 핸들링 구조는 다음과 같습니다. 클린 아키텍처의 이점을 살리기 위하여 레이어를 분리하고 ErrorVO와 ErrorDTO 로 에러 객체를 나눴는데요, 이렇게 하면 다음과 같은 장점이 있습니다. - ..

현재 프로젝트에서 Moya 를 사용하고 네트워크 에러 또한 Moya 에서 정의한대로 사용하고 있는데요. 프로젝트를 진행하다 돌아보니 Moya 에서 정의한 에러들을 정확하게 알지 못한다고 느꼈습니다. 그래서 이번에 에러 핸들링 구조를 리팩토링 하기전, 한번 정리를 싹 해보려고 합니다. 고고!MoyaErrorMoya Error 에는 총 9개의 케이스가 있습니다.public enum MoyaError: Swift.Error { case imageMapping(Response) case jsonMapping(Response) case stringMapping(Response) case objectMapping(Swift.Error, Response) case encodableMappi..

개요 이번에 개인 프로젝트를 하면서 Lottie 를 아주 많이 사용하였습니다. 간단하게 정리하여 포스팅하면 좋을 것 같아 글을 쓰게 되었습니다. LottieAdobe After Effects 애니메이션을 Bodymovin과 함께 json으로 내보낸 후 모바일 및 웹에서 기본적으로 렌더링하는 안드로이드, iOS, 웹 및 윈도우용 라이브러리(*Bodymovin : Adobe After Effects 를 json 으로 export 할 때 필요한 플러그인) 로티는 gif 와 다르게 벡터기반이기 떄문에 확대해도 이미지가 꺠지지 않고 용량이 적습니다. 사용자의 행동에 반응하는 인터렉션 애니메이션을 구현할 수 있습니다. 하지만 제작 난이도가 높다고 합니다. 이 부분은 이번 프로젝트에서는 제작까지 하지는 않았기 떄문..

개요 이전 프로젝트에서는 UserDefaluts를 사용하여 데이터를 저장 / 불러오기를 했었는데, 정석적인 방법은 아니였습니다. (UserDefaluts 는 간단한 사용자 데이터를 저장하고 불러오는 것에 적합했기 떄문에) 그래서 원래 프로젝트에서 더 적합한 방법이기도 하고 이후에 요긴하게 사용할 수 있을 것 같은 CoreData 의 전체적인 구조를 정리해야겠다고 생각을 해서 글을 쓰게 되었습니다. CoreDataPersist or cache data on a single device, or sync data to multiple devices with CloudKit. 단일 장치에 데이터를 유지하거나 캐쉬할 수 있고 CloudKit을 사용하여 여러 장치에 데이터를 동기화할 수 있는 Framework ..

개요 프로젝트를 진행하는 중에 앱 내의 데이터를 저장할일이 필요해서 자료를 찾던 도중 UserDefaluts와 CoreData 두개의 방법을 찾게되었습니다. 현재 프로젝트에서는 많은 데이터 저장이 필요없고, CoreData가 다루기 힘들다는 판단을 하여 이번 프로젝트에서는 UserDefaluts를 사용하기로 결정하였습니다. UserDefalutsAn interface to the user’s defaults database, where you store key-value pairs persistently across launches of your app. UserDefaluts란 유저의 데이터를 키 / 값 쌍으로 저장하는 *싱글톤 패턴의 인터페이스 이다.(*싱글톤 패턴: 생성자가 여러 차례 호출되더라도..