King of Stock

UITableView tableView.endUpdates() 오류 발생시 본문

IT 기술

UITableView tableView.endUpdates() 오류 발생시

king of stock 2018. 4. 2. 13:13

UITableView 함수인 endUpdates() 호출할 때에 다음과 같은 오류가 발생하는 경우가 있다.


오류메시지: 

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Invalid update: invalid number of rows in section 0.  The number of rows contained in an existing section after the update (14) must be equal to the number of rows contained in that section before the update (14), plus or minus the number of rows inserted or deleted from that section (0 inserted, 10 deleted) and plus or minus the number of rows moved into or out of that section (0 moved in, 0 moved out).'


혹은 브레이크 포인트 설정을 하지 않아서 Debug Area에 Continue program execution 버튼을 다다다다 눌러서 나온 메시지가 위에 것과 같다면

(제가 브레이크 포인트 설정을 했지만 로그가 나오게 하진 않아서 위와 같이 메시지를 매번 확인 했었지요... 훗)


테이블 뷰의 섹션의 행 개수와 실제 보여줄 섹션 개수가 맞지 않아서 발생하는 오류로 보면 됩니다.

아래는 위에 같은 상황이 발생하는 케이스를 간단하게 적어봤다.(정말 간단...)




코드를 보시면 특정 섹션의 행 개수를 정하는 데이터(배열이지요)는 삭제하지 않고 tableView.deleteRows 함수 호출후 tableView.endUpdates()가 호출 되는걸 볼 수 있습니다. 그러면 바로 위에 오류 메시지가 빡! 나오죠~



영어 정말 싫어요...


추가로 아래는 브레이크 포인트 설정시 메시지가 나오게 설정한 예시에요.



Comments