Swift

[Combine] tryMap 말고 compactMap 으로 조져보자

insub4067 2023. 1. 13. 21:24

오늘 클론코딩을 하면서 아래와 같은 에러와 마주했다 👇👇

그리고 강제 언랩을 해주어도 사라지지 않네? 엥?

왤까.. 컴파일러가 이렇게 부정확한적이 없는데 뭐지 뭐지...
주변에 물어보니 간혹 생기는 컴바인 버그라고 하길래 일단 ㅇㅋ 하고 tryMap 을 열어보기 시작했습니다.
대충 읽어보면 Publisher 를 어레이로 받아서 하나씩 돌리는데 거기서 throw 가 발생하면 -> Subscribers.Completion.failure 로 리턴한다. 그러니까 만약 iterate 할때 throw 할일 없으면 map 쓰세요~ 라고 하네요.

그래서 map 으로 돌리면 또 에러가 납니다 참고로 UIImage in 이로 바꿔도 동일한 에러발생

그래서 나의 해결책은? compactMap 으로 조져~
그러면 nil 이 사라질태니까 에러도 없겠지? 아주 잘돌아갑니다

앞으로 Combine 쓸땐 특별한 예외 상황아니면 compactMap 만 쓰도록 하겠습니다!