---
# System prepended metadata

title: TableView / JSON Decoder 관련 생각할 거리

---

# TableView / JSON Decoder 관련 생각할 거리
~= 연산자
>https://woongsios.tistory.com/147

Comparable 프로토콜




### Q. JSONDecoder를 변수에 담는 것이 좋을지, 담지 않고 객체를 생성하기만 하는 게 좋을지?
- 만약 keyDecodingStrategy 를 사용하려면 변수에 담아야 하고, 그게 아니라면 바로 사용하면 된다
- keyDecodingStrategy는 enum이다.
- .convertFromSnakeCase 를 사용하면 스네이크로 되어있는 키들을 -> 카멜로 바꿔준다
```swift
// 이런식으로 사용
let decoder = JSONDecoder()
decoder.keyDecodingStrategy = .convertFromSnakeCase
```
>https://developer.apple.com/documentation/foundation/jsondecoder/keydecodingstrategy/convertfromsnakecase





### Q. JSON 파일을 프로젝트 내부로 이동시키는 방법. Asset에 넣지 않고 파일 트리에 바로 넣는다면 어떤 방식으로 JSON파일을 찾아올 수 있을까요?
- Asset에 넣는다면 NSDataAsset(named:) 이런식으로 찾아오기
- 다른 방법으로는 Resource라는 폴더를 만들어서 그 안에 JSON 파일을 넣을 수 있다. 이 방법이라면 -> main.bundle~ 뭐 이런식으로 찾아올 수 있는것 같음




### 이미 필요한 프로토콜들이 다 채택되어 있고 구현되어 있는 UITableViewController를 쓰지말고 그냥 뷰컨에 UITableViewDataSource와 UITableViewDelegate를 채택해 쓰라고 하는 이유는 뭘까?
- 다른 팀 pr에서 뷰컨에 테이블뷰 추가하는거 보다, 테이블뷰 컨트롤러를 사용하는게 더 메모리적으로 좋다고 했나? 뭐 그랬던 것 같은데,,,, 진짜인지 궁금하다 (아카페러 팀이었던것 같음)




### datasource의 메소드들은 한 번만 호출될까? 여러 번 호출될까?
- 여러번 호출된다




### cell에 identifier가 있는 이유가 뭘까?
- 왜일까... identifier에 해당하는 셀을 불러오기 위해?




### Custom Cell을 사용할 때 dequeueReusableCell()을 통해 디큐해온 셀에 타입캐스팅을 해주는 이유는 뭘까?
- 커스텀한 셀 클래스안에 프로퍼티나 메서드에 접근하기 위해서?




### navigation bar는 navigation controller를 통해서만 추가할 수 있을까? 
- 놉! Object Libraray에서 navigation bar만 단독으로 추가할 수 있음. 근데 야곰이 추천하지 않는다고 하셨는데, 이유는 오토레이아웃을 잡기 힘들어서 였음
