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 |