Trouble Shooting

Object(객체)가 유효하지 않다고 나올 때

GEEEEEEEE

이 문제는 내가 포트폴리오를 만들면서 직면한 문제였다.

 

 

 

현재 좌표를 기반으로 가져온 라멘 가게들의 검색 결과

 

 

 

가게 cell을 눌렀을 땐 문제가 없으나, 다시 뒤로가기를 눌렀을 때,

 

 

오류가 발생하였다!!

 

 

 

Object has been deleted or invalidated.

 

 

 

객체는 이미 삭제되었거나 유효하지 않습니다.

 

 

 

음.. 처음에는 대체 뭐가 문제인지 종잡을 수 없었다. 

 

 

 

왜냐면, 검색 ViewController에서 불러온 정보와

 

 

 

가게 정보 ViewController로 넘어간 정보와 일치하다고 생각했기 때문이다.

 

 

 

하지만, 내가 간과한 점은 각 객체마다 realm에 저장하기 위해서

 

 

 

id를 부여했다는 점이었다.

 

 

 

 

불러온 데이터는 각 객체마다 id를 부여받게 된다.

 

 

 

그리고, 데이터를 불러오는 함수(getRamenData)는

 

 

 

검색 ViewController의 viewWillAppear 함수에서 실행된다.

 

 

 

 

그러므로, 검색 VC가 나타나기 전에 해당 함수는 실행된다. 

 

 

 

그래서, 여기에서 새로 불러온 데이터가 전에 불러온 데이터와의 차이에서

 

 

 

id가 다르지 않을까 라는 생각을 했다.

 

 

 

가게를 누르고 나오는 id와 

 

 

 

뒤로 가기를 눌렀을 때 (데이터를 불러올 때) 나오는 id가 서로 다르다는 것이다!

 

 

 

그래서 각 id를 print해보았다.

 

 

 

 

 

id가 서로 다르다는 것을 확인했다.

 

 

 

그러면, 데이터들을 보여주는 데이터가 담겨있는 배열들을

 

 

 

데이터를 불러오기 전에 비워줌으로서,

 

 

 

id를 초기화시켜주었다.

 

 

 

 

 

배열을 데이터를 불러오기 전에

 

 

 

비워줌으로써 객체가 사라졌다고 하는 오류는 

 

 

 

사라지게 되었다!