목차
- 포스팅 동기
- Archive 시 Type '' has no member '' 문제 발생
- 문제될만한 곳 확인하기
- 문제 해결
포스팅 동기
개인 앱을 만들다가 어느정도 완성되기도 했고, 햅틱 반응 테스트가 필요해 테스트 플라이트에 올려보기로 했다.
그런데 시뮬레이터나 실기기 연결에선 잘되던 빌드가 아카이빙에서만 빌드 에러를 뱉는 문제가 발생했다.
해당 문제를 정리하는 것부터 문제의 원인까지 차근차근 접근하다보면 해결되지 않을까 싶어 포스팅하게 되었다.
Archive 시 Type '' has no member '' 문제 발생
위 사진처럼 에러가 나는데, 실제 파인더 경로에 가보면 정상적으로 파일들이 있고 해당 코드부분을 눌러보면 에러메시지가 사라진다.
(에러 메시지가 사라지는게 가장 의문..)
문제될만한 곳 확인하기
가장 처음으로 Assets의 파인더 구조를 확인해봤는데, ~/Assets.xcassets > Colors 로 정상적이었다.
이제 의심해볼만한 곳은 4곳이다.
1. 빌드 세팅에서 컴파일 순서
2. Color 의 접근 권한
3. ImageResource 의 접근 권한
4., Strings 의 접근 권한
1번 빌드 세팅에서의 컴파일 순서, 혹시 Color, Strings을 제일 먼저 컴파일하면 되지 않을까 싶어 컴파일 순서를 맨위로 올려보았다.
역시 변화 없음. 실패
2번 Color 의 접근 권한, 문제가 되는 Color.timerBlue 는 XCode 15에서 생긴 GeneratedAssetSymbol파일에 있다고 한다.
음.. 문제 없어보이니 패스
3번 ImageResource 또한 XCode 15에서 생긴 GeneratedAssetSymbol 파일에 있다고 한다.
ImageResource 도 특별한 건 없어 보인다.
4번 Strings 는 내가만든 Enum 으로 public으로 설정되어 있어 접근에는 문제가 없어 보인다.
문제 해결
Color, Image Assets 직접 관리하는 방식에서 다시 예전 방식인 직접 ColorLiterals, ImageLiterals Enum 을 만들어 사용하는 방식으로 돌아가기로 했다. 이 문제 하나로 시간을 너무 잡아먹고 있기도 하고, 사실 컬러와 이미지가 몇개되지 않아 직접 Enum을 만들어 관리한다고 해도 코드가 몇줄 되지 않는다. 한가지 단점이라고 하면 오타 이슈에 취약하다는 점인데 정신을 똑바로 차리고 코드를 치는 것으로 해결하기로 했다.
추가 의문점
위의 Enum들이 Color와 Image를 사용하는 View 들과 같이 Sources 폴더에 넣으면 에러가 안나는데, Resources 폴더에 넣고 아카이빙하면 다시 에러가 발생한다. 어느 폴더에 있거나 소스를 컴파일하는건 같은데 왜 결과가 다를까?
사실 여기까지 도달하기까지 이틀 정도 걸렸다. 위 방법들 뿐만 아니라 별거 다 만져봤는데 아직 해결 실패다..
언제나처럼 해결한 뒤엔 간단한 문제겠지만 당장은 미궁속에 있는 기분이다.
다음으로 파볼 곳으로는 Color, ImageResource 가 빌드 및 아카이브 시 어떻게 동작하는지를 알 필요가 있어보인다.
아무래도 XCode 15로 업데이트되면서 생긴 최신 기술이라는 메리트 + Enum을 직접 작성하지 않아도 된다는 장점만 보고 원리를 모르고 바로 가져다 쓴게 화근이지 않았을까 싶다.
해당 문제에 대해 비슷한 고민이 있으시면 댓글 달아주시면 감사하겠습니다.
'iOS' 카테고리의 다른 글
Swift 찍먹하기 (1) | 2024.04.23 |
---|---|
XCode15+ Image Color Assets 관리 방법의 변화 (0) | 2024.03.05 |
MPNowPlayingInfoCenter 제어센터 초기세팅 및 갱신하는 방법 (0) | 2023.05.16 |
UITableView 로 가사 기능(트래킹, 하이라이팅, 탐색) 개발 기록 (0) | 2023.04.21 |
Tuist Project 'Could not build Objective-C module' 오류 해결법 (0) | 2023.01.12 |