{ (매개변수들) -> 반환 타입 in
실행코드
}
for문을 활용한 변경
map 고차함수 사용
for문을 활용한 filter
filter 고차함수 사용
for문을 활용한 reduce
reduce 고차함수 사용
고차함수 체이닝
축약:
2차원 배열을 1차원으로 평평하게 펼쳐준다.
다양한 고차함수의 체이닝:
For문과 성능차이?
축약형으로 사용시 compile에서 for문에 비해 조금 느려질 수 있다.
현재 만국박람회의 메인화면에서 박람회출품목록으로 화면전환을 할 때 빈 목록의 화면으로 전환되는 문제를 격고 있다. 분명히 JSON파일 또한 적절하게 파싱을 viewDidLoad()에서 진행하였고 테이블뷰 컨트롤러, 테이블뷰 셀에 각각 동일한 cell identifier을 설정 해 놓았고 cell에 데이터를 아래와 같이 올바른 방법으로 dequeu를 했다 생각된다.
guard let cell = self.tableView.dequeueReusableCell(withIdentifier: "ItemTableCell", for: indexPath) as? ItemTableViewCell else {
return UITableViewCell()
}
아래와 같은 방법으로 세그를 push하는게 문제였다.
@IBAction func didTapItemListButton() {
navigationController?.pushViewController(ItemTableViewController(), animated: true)
}
세그를 부쉬하기 위해서는 먼저 새로운 뷰 컨트롤러의 인스턴스가 필요하고 더 나아가 어떤 뷰컨트롤러의 인스턴스를 생성해야 할지 XCode는 모르기 때문에 제대로 새로운 창으로 전환이 되지 않았던 것이다.
@IBAction func didTapItemListButton() {
guard let pushViewController = self.storyboard?.instantiateViewController(withIdentifier: "itemTableViewController") as? ItemTableViewController else {
return
}
self.navigationController?.pushViewController(pushViewController, animated: true)
}
코드로 짤 수 있지만 그냥 마우스로 버튼을 클릭한 뒤 드래그 앤 드랍으로 쉽게 push 세그하는 방법이 있어서 바로 해당 코드를 지우고 더 쉬운 방법을 채택하였습니다 😅
박람회 출품 목록에 사진과 글이 자꾸 짤린다. 그리고 왜그런지 모르겠지만 자꾸 clipping된다고 노란색 경고 표시가 뜨는 문제 때문에 오랜시간 씨름하였다.
Cell 속 이미지에 constraint를 줄 때 이미지 사이즈를 지정해 준 뒤 x축 y축 constraint 뿐 아니라 leading, trailing, top, bottom constraint를 다 짬뽕으로 줘서 나는 문제점을 인지하였고 X축과 Y축 constraint를 해지하여 노란색 경고창 문제를 해결할 수 있었다.
또한 출품작 이미지 사이즈는 동일하게 하고 싶었고 출품작의 상세정보는 문자열의 길이에 따라 cell의 높이를 조절하고 싶었는데 바보같이 이미지의 사이즈를 고정해 놓은 상태로 top 그리고 bottom constraint를 지정해 주니 글 길이에 따라 셀이 커질리가 있나;; 얼른 이미지뷰 top, bottom → content view의 top, bottom constraint를 없애 버렸다.
self.tableView.rowHeight = UITableView.automaticDimension
self.tableView.estimatedRowHeight = 150
위 코드는 cell의 사이즈를 다이나믹하게 설정할 때 cell이 이미 예상하고 있는 높이가 있기에 cell의 작업량을 덜어줘서 효육성을 높혀주기 때문에 사용하면 좋은 코드라 생각되어서 적어본다.