[Swift] Test Double(테스트더블)
2023. 1. 30. 16:55
카테고리 없음
이번 포스팅에서는 테스트더블에 대해서 다뤄보겠습니다. Test Double이란? 테스트를 진행할 때, 실제 객체를 대신에 사용하는 객체를 Test Double(테스트더블) 이라고 함 테스트 더블은 실제 객체와 같은 인터페이스를 사용하여 구현 테스트 더블을 사용하는 클라이언트는 해당 객체가 테스트 더블인지 실제 객체인지 알 수 없음 Test Double 종류 Dummy Fake Stub Mock Spy Dummy 더미란 실제 사용되지는 않지만 필요한 객체입니다. class A { func function() { } } class B { func function() { } } class C { var a: A var b: B init(a: A, b: B) { self.a = a self.b = b } fun..
[RxSwift] Extension으로 Binder만들기
2023. 1. 2. 17:43
RxSwift
안녕하세요 오늘은 내가 만든 함수를 bind(to: ~)에 사용하는 방법에 대해 포스팅하겠습니다. View와 ViewModeld을 값을 바인딩할때 아래와 같은 코드를 사용합니다. viewModel.output.text .bind(to: label.rx.text) .dispose(by: disposeBag) String값을 Label에 쉽게 바인딩하고, Bool값을 isHidden에 바인딩해 손쉽게 실시간으로 변화하는 UI를 구현할 수 있습니다. 보통 자주 사용되는 컴포넌트나 디자인들을 미리 구현해두는데 이때 내가 만든 함수를 Binding 해서 사용하고싶다! 할때 Reacitve를 확장해 보다 편리하게 사용할 수 있습니다. 간단한 예제와 함께 확인해보겠습니다. Binder 구현 전 class Button..
[iOS] UIView를 생성할 때 연산프로퍼티(computed property)가 안되는 이유
2022. 12. 29. 15:31
iOS
UIKit에서 UI를 그리는 방법은 두가지가 존재합니다. Storyboard를 이용하는 방식과 Codebase로 작성하는 방법이 있습니다. 저는 협업시 충돌, 유지보수 어려움등의 이유로 Codebase로 UI를 구현하는것을 선호합니다. 그럼 오늘 주제인 Codebase로 UI를 구현할때 UIView인스턴스를 생성해야 하는데 이때 lazy를 사용하는 이유 연산프로퍼티는 안되는 이유에 대해 알아보겠습니다. 추가로 UIView 인스턴스를 생성할 때 도움을 주는 라이브러리에 대해서도 소개하겠습니다. 연산프로퍼티로 생성하면 안되는 이유 그럼 일단 간단하게 UILabel하나를 연산프로퍼티를 통해 정의하고 AutoLayout을 설정해주는 코드를 작성하고 실행해 보겠습니다. import UIKit var label: ..
[iOS] Tuist App Extension 추가하기
2022. 12. 28. 18:05
iOS
이번 포스팅에서는 Tuist에 App Extension을 추가하는 방법에 대해 알아보겠습니다. 저는 Widget으로 예시를 들겠습니다. Target 만들기 AppExtension은 Target으로 생성해줘야 합니다. Target(name: "WidgetExtension", platform: .iOS, product: .appExtension, bundleId: bundleID + ".WidgetExtension", deploymentTarget: .iOS(targetVersion: iosVersion, devices: [.iphone]), infoPlist: .file(path: .relativeToRoot("WidgetExtension/Info.plist")), sources: [.glob(.relat..
[iOS] UIButton Image와 Title사이 간격 조절하기
2022. 12. 27. 17:36
iOS
UIButton에 setImage함수를 통해 이미지를 삽입가능합니다. 이때 image와 title을 동시에 설정한 경우 두 간격 사이를 조절할 필요성이 있습니다. 이때 방법은 간단합니다 iOS 15.0 이하 button.imageEdgeInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 3) inset의 right값을 수정해주시면 됩니다. 기본적으로 이미지는 타이틀의 좌측에 위치하기 때문이죠 만약 반대라면 left값을 수정해주시면 됩니다. imageEdgeInsets 같은 경우는 15.0 이상에서는 deprecated 된다고 하네요! 메시지를 보면 UIButtonCOnfiguration을 사용하라고 합니다. UIButton의 configurationd을 ..
[iOS] Google Sheets와 Script로 현지화 자동화하기
2022. 12. 27. 15:40
iOS
안녕하세요 오늘은 GoogleSpreadSheet와 Python Script를 이용해서 현지화(문자열 관리) 자동화하는 과정에 대해 소개하겠습니다. 저는 현재 글로벌서비스를 준비하고 있으며 문자열 관리와 반복되는 strings파일 업데이트등 이유로 생산성을 높이기 위해 해당 자동화를 구축했습니다. Process 1. 구글시트에 관리할 문자열에 대해 작성한다. 2. 구글시트에서 시트를 읽어 스크립트를 통해 strings파일로 변환한다. 3. 빌드 이전에 스크립트가 동작해도록 설정해 자동으로 원하는 위치에 strings파일을 넣어준다. 구글시트 작성하기 저의 구글시트는 이런식으로 작성했습니다. Description은 strings파일에서 주석부분입니다. Keys는 Key값 C열부터는 Value값이 됩니다. ..
[iOS] iOS프로젝트에 Script 설정하기 (with Tuist)
2022. 12. 21. 14:18
iOS
이번에는 프로젝트에 스크립트를 설정하는 방법에 대해 포스팅하겠습니다. 대표적으로 스크립트를 설정하는 라이브러리로 Firebase, SwiftLint가 있습니다. XcodeProj Build Phase 설정하기 원하는 프로젝트 타겟에 - Build Phases 으로 접근해줍니다. 좌측에 있는 + 버튼을 클릭해 New Run Script Phase를 선택해줍니다. 추가하면 Build Phases에 Run Script 라는게 추가됩니다. Run Script 살펴보기 For install builds only 이건 저도 정확하지는 않지만.. 제가 직접 해본결과 체크됐을때는 제목 그대로 Build Action을 취했을때만 스크립트가 실행됐습니다. Run Action을 취한경우에는 실행되지 않았습니다. 해제됐을때는..
[iOS] Tuist 외부라이브러리 가져오기 - Tuist (3/4)
2022. 11. 29. 15:22
iOS
Tuist에 처음 접하시는 분들은 아래 두 포스팅을 보고 오시면 도움이 됩니다! https://cheonsong.tistory.com/14 [iOS] 프로젝트 생성 및 관리 - Tuist (1/4) Tuist 란? Tuist는 Xcode 프로젝트의 생성, 유지보수 및 상호 작용을 용이하게 하는 것을 목표로 하는 CLI(명령줄 도구)입니다. 또한 프로젝트 셋팅을 Swift로 하기때문에 iOS 개발자들에겐 다른 도구에 cheonsong.tistory.com https://cheonsong.tistory.com/15 [iOS] 프로젝트 모듈화 하기 - Tuist (2/4) 1편에서 간단하게 Tuist 사용법에 대해 알아봤습니다. Tuist에 대해 잘 모르신다면 https://cheonsong.tistory.c..