본문 바로가기
Swfit

Storyboard merge conflicts 해결하기 - Multiple elements have the IDs "..."

by GGShin 2025. 4. 15.

storyboard를 사용하면 merge할 때 conflicts 해결이 힘들다는 이야기를 들었었는데,

직접 겪게 되니 정말 쉽지 않다는 것을 느끼게 되었습니다.

아직까지는 매번 새로운 conflicts들을 마주하고 있지만, 하나씩 해결하고 정리해 놓다보면 어느 순간에는 겪어보았던 것들 위주로 나오지 않을까 하는 기대를 가지고 있습니다.

 

이번에 마주한 친구는 동일한 ID를 가진 elements들이 있다는 내용이었습니다.

The document "Main.storyboard" could not be opened.
Multiple elements have the IDs "..."

 

 

 

제대로 conflicts를 해결한다고 집중해 가면서 잘 선택해서 잘 해결한 줄 알았더니, storyboard를 InterfaceBuilder로 열려고 하니 저런 에러가 나왔습니다.

 

처음에는 중복되는 것을 지우면 되나 싶은 단순한 생각으로 접근했는데, 

저 ID가 UI를 지칭하는 것이라면 여러 번 사용되는 것이 당연하기도 하고 (layout 설정할 때 여러번 ID가 사용될 수 있으므로!) 일단 xml을 세세히 보면서 잘못된 부분을 찾아 내는 것이 쉽지 않아서 방식을 바꾸게 되었습니다.

 

일단은 rebase 전으로 돌아간 다음 다시 rebase를 시작하면서 어디에서 중복이 일어났는 지 확인해보았습니다.

그랬더니 걱정한 것 보다는 쉽게 해당 에러의 원인을 찾을 수 있었습니다..! 바로 특정 view를 중복으로 추가하려는 시도가 있었던 것입니다. 그러다 보니 xcode 입장에서는 동일한 ID를 가진 두 개의 view가 있으니 위와 같은 에러를 띄워주었던 것이죠. 해당 부분은 conflict로 표시되어 있지도 않았다 보니 처음에는 찾을 수가 없었던 것이었습니다. 이미 있는 view인데도 왜 또 추가하려고 했는지는.. 알 수가 없습니다. 

 

중복되어 들어가지 않도록 추가된 부분을 삭제 해주고, 나머지 conflicts들을 해결해주었더니 다행히도 정상적으로 interface builder가 열렸습니다. XML은 집중해서 보지 않으면 쉽게 수정하기가 어렵다 보니 난이도가 확 올라가게 되는 것 같습니다. 

또 다른 에러를 만나면 해결 방법을 찾아서 공유해보겠습니다 ㅎㅎ

 

 

반응형