본문 바로가기

IT/Swift

Firebase의 database안에서 Observe에 대한 간단한 고찰


FIRDatabase.database().reference().child("childID").observe(********) 

firebase에서 데이타베이스를 이용하면 위와 같은 코드를 자주 만날수 밖에 없다.

뭐 여기저기에 있는 샘플 코드를 가져다가 쓰면 아주 쉽게 사용할수 있는데...


그냥 막 가져다가 쓰던중 갑자이 든 생각이 과연 저 observe안의 값을 바꾸면 어떻게 될까? 라는 

아주 간단한 궁금증이 였다. 


지금 까지는 value를 사용했는데, 이 벨류는 childID에 있는 모든 값을 다 가지고 와서 딕셔너리에 넣어준다.

그냥 그런가보다 하고 사용했는데, 이번에 유튜브에서 다른 선생의 강의를 듣다가 그 선생은 

밸류는 퍼포먼스에 좋지 않고, childAdded를 사용하란다.(물론 사용처마다 다르겠지만.)


차일드 애디드는 그냥 밑에 새로 생기면 그 값만 추가되는줄 알았는데....

역시 그러했다!!


근데 중요한것은 차일드 애디드로 가져오는 값들은 모두 차일드를 기준으로 따로따로 딕셔너리를 만들어서 가져오는 반면

벨류는 그 차일드 아래에는 모든 데이타를 하나의 딕셔너리에 넣어서 가져온다.


무슨 말인지 아는가?


결국 밸류는 한번 업데이트 할때마다 모든값을 다 가져온다는 말이고,

child+added, modified등등등은 바뀐놈, 수정한놈, 추가된놈의 그 정보만 콤펙트하게 가져온다.


여기까지만 들어도 어떤 상황에 따라 어떻게 사용하는게 좋을지 감이 올꺼라고 생각이 든다.




'IT > Swift' 카테고리의 다른 글

KILabel 그리고 cancelsTouchesInView  (0) 2017.05.13
UITableView.ReloadData 그리고 delegate  (0) 2017.05.07
UILabel 그리고 NumberOfLine  (0) 2017.04.28
SVProgressHUD 똘똘하게 사용하기  (0) 2017.04.22
Day.1 Optional? 뭐가 옵션인디?  (0) 2017.04.20