-
SPM을 사용하는 프로젝트에서 SPM의 번들에 접근하고 싶은 경우Swift 2022. 10. 28. 01:31
제목이 좀 길긴하지만, 최대한 쉽게 간단하게 적어보았다.
내가 만든 spm에서 사용하는 번들 내부에 있는 리소스들을 (asset파일, json 파일 등)을 spm을 적용시킨 프로젝트에서 사용하고 싶은 경우가 있을 수 있다.
그럴 경우 spm 내부에서 정말 간단하게 extension을 하나 걸어주면 된다.
위 처럼 Bundle의 extension으로 타입 프로퍼티 변수로 하나 만들어주면, 프로젝트에서 해당 spm Bundle에 마음껏 접근이 가능하다. 다음은 사용 예시다.
매우 간단하다.
이건 조금 case가 드물 수도 있어서 적어본다.
위와 같은 형식으로 SwiftUI modifier를 View에 extension 시키는 함수가 있었다.
너무도 당연하게 Color의 "BackgroundColor"가 asset 파일에 있어서 bundle에 Bundle.module 이라고 적어두었는데, 이게 웬걸?
다음과 같은 에러 문구가 떴다.
Static property ‘module’ is internal and cannot be referenced from a default argument value
기본적으로 Bundle에 있는 module 타입 프로퍼티는 기본적으로 접근제어자가 internal로 선언되어 있어 외부에서 접근이 불가능 하다는 말이다. 근데 그냥 public으로 하나 만들어주면 되겠거니 해서 다음과 같이 해결하여 문제를 풀었다.
아까 만든 Bundle extension에 static public 한 프로퍼티를 하나 만들어준다.
그리고 Bundle.module 대신 Bundle.publicModule 을 사용하니 해결이 되었다. 👏👏👏👏👏
'Swift' 카테고리의 다른 글
pod install error>>> [!] Unable to determine the platform for the `app name` target (0) 2023.07.17 SPM에서 asset 파일 사용 방법 (0) 2022.10.28 회사 코드 private 라이브러리 회상 (3) - 새로 알게된 점 (0) 2022.10.27 회사 코드 private 라이브러리화 회상 (2) - SPM (0) 2022.10.27 회사 코드 private 라이브러리화 회상 (1) - CocoaPod (0) 2022.10.27