본문 바로가기

전체 글43

[iOS앱 개발] Mock 객체와 Protocol주입을 통한 UnitTest(실전편) 이전 포스팅에서 Mock객체와 Protocol 주입을 통한 UnitTest의 개념에 대해서 알아봤는데요. 이번 편에서는 실제로 제 앱에서 어떤 식으로 Mock객체를 만들었는지 소개해드리겠습니다. StocksDataManager 및 StocksDataManagerProtocol StocksDataManager는 주식 차트 데이터를 가져 오기위한 API를 제공하는 클래스입니다. 현재 앱에서는 MVVM패턴을 사용해 ViewModel이 StocksDataManager에서 가져온 데이터를 가공해 View에 그려주는 역할을 하고 있습니다. 앱을 개발할 때 StocksDataManager에서 데이터를 받아와 ViewModel이 원하는 형태로 데이터를 가공하고 있는지 매번 네트워킹을 통해 값을 확인했어야 했습니다. 하.. 2023. 6. 10.
[Swift]에서 Mock 객체 만들기와 Protocol 주입을 통한 Unit Test 소개 Swift에서는 Unit Test를 위해 XCTest Framework을 제공하고 있습니다. 이를 통해 개발자들은 코드의 품질을 높이고 버그를 방지할 수 있습니다. 이번 포스팅에서는 Swift에서 Mock 객체를 만들고 Protocol 주입을 통해 Unit Test하는 과정에 대해 자세히 알아보겠습니다. Mock 객체란? Mock 객체란, 테스트를 위해 실제 객체를 대신하여 사용되는 가짜 객체입니다. 실제 객체와 동일한 인터페이스를 가지지만, 내부적으로는 테스트를 위한 로직을 구현합니다. 예를 들어, 네트워크 요청을 테스트하기 위해서는 네트워크 요청을 하지 않고 Mock 객체를 사용하여 응답을 받는 것이 좋습니다. 이렇게 Mock 객체를 사용하면, 테스트의 성능을 향상시킬 수 있습니다. Protoc.. 2023. 6. 10.
[iOS앱 개발] TableView 드래그로 새로고침 (UIRefreshControl) 기존에 새로고침 버튼의 불편함 해소 기존에는 새로고침 버튼을 눌렀었는데 이게 높이 있어서 누르기가 정말 귀찮았습니다. 그래서 간편하게 테이블뷰를 아래로 드래그 해서 새로고침을 할 수 있는 기능을 간단하게 구현했습니다. UITableView에 UIRefreshControl 추가하기 테이블뷰를 아래로 당겼을 때 새로고침하는 기능을 추가하려면, UIRefreshControl을 사용할 수 있습니다. 먼저, viewDidLoad()에서 UIRefreshControl을 만들고, newsTableView에 추가해줍니다. 그리고, refreshControl의 addTarget을 통해 사용자가 새로고침을 요청할 때 호출할 메서드를 지정해줍니다. 이후 아래로 당겨서 새로고침을 요청하면, addTarget으로 지정한 메서드.. 2023. 6. 8.
[iOS앱 개발] 리뷰 요청 팝업 알람 띄우기 앱의 리뷰 팝업의 중요성 앱 출시 후 약 한 달이 지났습니다. 아직 본격적인 출시가 이루어지지 않아 다운로드 및 리뷰 횟수는 매우 적습니다. 다운로드한 유저들이 리뷰를 남기지 않는 경우가 많은데, 이때 리뷰 팝업을 띄워 유도하면 리뷰 수를 늘리고 신규 유저의 유입을 증가시킬 수 있습니다. 리뷰 팝업을 띄우는 방법으로는 StoreKit으로 직접 구현하는 방법이 있지만, 이는 다소 복잡합니다. 하지만 이미 쉽게 팝업을 띄울 수 있는 라이브러리가 있어 이를 사용하기로 결정했습니다. SwiftRater takecian/SwiftRater A utility that reminds your iPhone app's users to review the app written in pure Swift. - takecian.. 2023. 6. 8.
[Swift] 의존성 주입(Dependency Injection) 객체간 결합도를 낮추기 위해서 어떤 개념을 알아야 할까요? Swift에서는 객체 간의 의존성 관계를 명확히 하고, 코드의 재사용성을 높이기 위해 의존성 주입(Dependency Injection) 이라는 기법을 사용합니다. 의존성 주입은 말 그대로 '의존성을 주입한다'는 뜻으로, A라는 변수에 B라는 값을 할당하려면 반드시 C라는 메서드를 이용해야 하는 구조를 말합니다. 의존성 주입을 사용하면 객체 간의 결합도를 낮출 수 있습니다. 의존성이 높은 객체는 다른 객체에 의존할 때 의존 객체가 변경될 경우 영향을 받습니다. 이를 방지하기 위해 의존성을 낮추면 객체는 자신의 역할과 책임에 집중할 수 있으며, 다른 객체와의 상호작용도 간단해집니다. 하지만 의존성 주입이 쉬운 작업은 아닙니다. 특히 여러 개의 모듈.. 2023. 6. 8.
[Swift] 에러처리(Result Type) 에러 처리는 프로그래밍에서 중요한 부분 중 하나입니다. 이번에는 Swift에서 에러를 처리하는 방법을 알아보겠습니다. 일반적인 에러 처리와 Result Type의 차이 Swift에서는 일반적으로 throws를 사용하여 에러를 처리합니다. 하지만 최근에는 Result Type을 이용한 에러 처리 방식도 좋은 방법으로 이용되고 있습니다. 먼저, throws와 Result Type의 차이에 대해 알아보겠습니다. throws를 사용하면 함수에서 에러를 던지게 됩니다. 이 때, do-catch문을 사용하여 에러를 처리합니다. 하지만, Result Type을 사용하면 함수에서 Result라는 타입을 반환하며, 성공 여부와 에러의 내용을 함께 전달할 수 있습니다. 에러를 정의하고 사용하는 방법 에러를 정의하고 사용하.. 2023. 6. 6.