-
Rxswift combineLatest 에러 The compiler is unable to type-check this expression in reasonable time개발/Swift 2023. 7. 1. 13:47
The compiler is unable to type-check this expression in reasonable time; try breaking up the expression into distinct sub-expressions
Rx - combine latest 에 9개 이상의 observable을 넣었더니 에러가 발생
CombineLatest를 쓸떄 8개까지만 쓸수가 있다
이를 해결하기위해 여러 더많은 Observable을 쓰려면
combine 을 하고 그거를 가지고 combine 해줘야한다.
let searchCombinedObservable = Observable.combineLatest(searchKeyword.asObservable(), eFriendList.asObservable(), eFriendsPageFinished.asObservable()) combine = Observable.combineLatest(aFriendList.asObservable(), aFriendExpand.asObservable(), bFriendList.asObservable(), cFriendList.asObservable(), dFriendsPageFinished.asObservable(), showOnlyFamily.asObservable(), searchCombinedObservable)
이렇게 묶어버리면 된다.
문제는 map 으로 떨어진 데이터가 튜플 형태로 떨어지기 때문에
0 , 1, 2 로 접근이 가능하다.
let searchCombinedObservable = Observable.combineLatest(searchKeyword.asObservable(), eFriendList.asObservable(), eFriendsPageFinished.asObservable()) combine = Observable.combineLatest(aFriendList.asObservable(), aFriendExpand.asObservable(), bFriendList.asObservable(), cFriendList.asObservable(), dFriendsPageFinished.asObservable(), showOnlyFamily.asObservable(), searchCombinedObservable) .map { aFriendList, aFriendExpand, bFriendList, cFriendList, cFriendsPageFinished, showOnlyFamily, searchCombine in searchCombine.0 searchCombine.1 searchCombine.2 //이렇게 접근해야해서 가독성이 좋지 않음 }
그랬을떄 가독성이 좋지 않으므로 combine 된 튜플을 네이밍 해주면 좋다.
let searchCombinedObservable = Observable.combineLatest(searchKeyword.asObservable(), eFriendList.asObservable(), eFriendsPageFinished.asObservable()) combine = Observable.combineLatest(aFriendList.asObservable(), aFriendExpand.asObservable(), bFriendList.asObservable(), cFriendList.asObservable(), dFriendsPageFinished.asObservable(), showOnlyFamily.asObservable(), searchCombinedObservable) .map { aFriendList, aFriendExpand, bFriendList, cFriendList, cFriendsPageFinished, showOnlyFamily, searchCombine in let (searchKeyword, eFriendList, eFriendsPageFinished) = searchCombine searchKeyword eFriendList eFriendsPageFinished }
'개발 > Swift' 카테고리의 다른 글
Swift 데이터 감싸져 있는 안에 있는 값 꺼내서 Decode하기 (0) 2023.07.22 UISearchbar, UISearchController 기초 사용법 (0) 2023.07.02 커스텀 UISlider 구현하기 (세로 슬라이드, 이벤트) (0) 2023.06.24 Collection View가 들어있는 동적 높이의 Table view Cell 구현하기 (0) 2023.06.18 Tableview와 스크롤을 다루는 방법 (0) 2023.05.31