카테고리 없음

iOS프로그래밍실무(10/15)

59date 2025. 5. 14. 16:45

📌 TableView 기본 구조 이해

  • iOS 앱에서 표 형태로 데이터를 출력할 때 사용하는 UI 컴포넌트가 UITableView
  • TableView 사용을 위해선 반드시 DataSource와 Delegate 프로토콜을 채택해야 함

📌 필수 메서드 구현

  • tableView(_:numberOfRowsInSection:): 섹션 내 셀의 개수를 반환
  • tableView(_:cellForRowAt:): 각 셀에 들어갈 내용을 구성

📌 커스텀 셀 만들기

  • 스토리보드에서 셀을 선택한 후, Identifier를 지정 (예: "myCell")
  • 셀 내부에 Label을 추가하고, 커스텀 셀 클래스(MyTableViewCell.swift)를 생성해 IBOutlet 연결


📌 네트워크 요청 흐름

  • URLSession을 사용해 외부 API 서버와 통신
  • API 호출은 비동기로 진행되며, 응답을 받은 후 데이터를 파싱하여 UI에 적용

📌 실습에 사용된 API

  • 영화진흥위원회(KOBIS) 오픈 API
    • 일일 박스오피스 정보를 JSON 형식으로 반환
    • URL 요청 시 key와 target date를 포함하여 전송

📌 JSON 파싱 구조체 구성

struct MovieData: Codable {
    let boxOfficeResult: BoxOfficeResult
}

struct BoxOfficeResult: Codable {
    let dailyBoxOfficeList: [DailyBoxOfficeList]
}

struct DailyBoxOfficeList: Codable {
    let rank: String
    let movieNm: String
}

📌 API 호출 및 파싱 흐름

  1. URL 생성 (Query 포함)
  2. URLSession.shared.dataTask 생성
  3. 받은 데이터(Data)를 JSONDecoder를 통해 디코딩
  4. 파싱된 데이터를 배열에 저장하고, DispatchQueue.main.async를 통해 UI 업데이트

📌 클로저와 후행 클로저 사용

  • dataTask 메서드는 클로저를 사용해 응답 데이터를 처리
  • 후행 클로저 문법을 활용하여 가독성 높임

📌 UI 업데이트 시 주의점

  • 네트워크 응답은 백그라운드 스레드에서 이뤄지므로, UI 업데이트는 반드시 메인 스레드에서 실행해야 함
DispatchQueue.main.async {
    self.tableView.reloadData()
}