피드로 돌아가기
올리브영 테크블로그Mobile
원문 읽기
스위프트 매크로_2탄, 어떻게 쓰는건데요?
올리브영 모바일팀이 Swift 매크로로 XMLParser와 WKScriptMessage 데이터 변환 코드의 중복 제거
AI 요약
Context
XMLParser에서 [String : Any] 형태의 데이터를 받거나 WKScriptMessage를 통해 JSONString을 받을 때마다 타입별 생성자 코드를 반복 작성해야 했다. 새로운 타입이 추가될 때마다 여러 곳에서 동일한 형변환 및 인스턴스 생성 로직을 복붙으로 관리해야 했다.
Technical Solution
- HeritageInitializer 매크로 개발: @InitFromDict와 @InitFromJSONString 두 가지 매크로 애노테이션 제공
- @InitFromDict 매크로: [String : Any] 딕셔너리에서 타입별 형변환을 자동으로 처리하는 생성자 자동 생성
- @InitFromJSONString 매크로: JSONString을 data(using: .utf8)로 변환한 후 JSONDecoder().decode()를 자동으로 수행하는 생성자 자동 생성
- 타입 선언부에 매크로만 붙이면 반복적인 생성자 코드 작성 제거
- 매크로 패키지를 디펜던시로 추가하고 빌드 단계에서 활성화 필요
Key Takeaway
Swift 매크로를 활용하여 런타임이 아닌 컴파일 단계에서 보일러플레이트 코드를 자동 생성함으로써 코드 중복을 제거하고, 개발자가 파일을 넘나들며 중복 코드 패턴을 감지하는 능력을 향상시킬 수 있다.
실천 포인트
Swift 프로젝트에서 XMLParser나 WKScriptMessage 같이 비표준 데이터 소스를 다룰 때, 타입별로 동일한 형변환 및 인스턴스 생성 로직을 반복하게 된다면 @InitFromDict나 @InitFromJSONString 같은 선언형 매크로를 작성해 타입 정의부에 붙이는 방식으로 생성자 자동화를 구현할 수 있다.