struct MovieData : Codable
- 서버/API에서 받아오는 데이터는 일반적으로 JSON 포맷
- Codable protocol을 채택하면 다음을 자동으로 대신 해줌
- JSONDecoder 클래스가 JSON → 구조체/클래스(디코딩)
- JSONEncoder 클래스가 구조체/클래스 → JSON(인코딩)
- 클래스가 매칭되는 변수 이름만 맞추면 복잡한 파싱 코드를 직접 만들 필요 없음
- 서버통신을 하거나, 파일 저장/읽기 기능을 구현할 때는 항상 Codable을 채택해서 정의함
JSONDecoder : JSON데이터를 원하는 데이터 타입으로 변환
- func decode<T>(_ type: T.Type, from data: Data) throws -> T where T : Decodable
해당 코드가 에러나는 이유 : 에러처리를 하지 않아서
해당 코드가 에러나는 이유 : 수동으로 직접 self를 써야 하는데 쓰지 않아서
Main Thread Checker관련 오류 발생
- Main Thread Checker는 Xcode가 제공하는 실시간 런타임 감시 툴
- UI 관련 코드가 메인 스레드가 아닌 다른 스레드에서 실행되는것을 탐지
- 앱 실행 중 콘솔에 "Main Thread Checker: UI API called on a background thread" 라고 경고가 뜸
AI에게 프로젝트에 필요한 기능인 어제의 날짜를 반환하는 소스를 만들어달라고 했을 때 답변
Stack View의 constraint
- Stack View의 핵심 프로퍼티는 4가지
- Axis - 가로(Horizontal) 스택 뷰인지, 세로(Vertical) 스택 뷰인지?
- Alignment - 하위 뷰의 위치 정렬
- Distribution - 하위 뷰의 크기 배분
- Spacing - 하위 뷰 사이 간격
func getData() {
guard let url = URL(string: movieURL) else{ return }
let session = URLSession(configuration: .default)
let task = session.dataTask(with: url) { data, response, error in
if error != nil {
print(error!)
return
}
guard let JSONdata = data else { return }
let dataString = String(data: JSONdata, encoding: .utf8)
//print(dataString!)
let decoder = JSONDecoder()
do {
let decodedData = try decoder.decode(MovieData.self, from: JSONdata)
//print(decodedData.boxOfficeResult.dailyBoxOfficeList[0].movieNm)
//print(decodedData.boxOfficeResult.dailyBoxOfficeList[0].audiAcc)
self.movieData = decodedData
DispatchQueue.main.async {
self.table.reloadData()
}
} catch {
print(error)
}
}
task.resume()
}
다음 코드들을 적용한 화면 (header와 footer)
func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
return "🍿박스오피스(영화진흥위원회 제공 : "+makeYesterdayString()+")🍿"
}
func tableView(_ tableView: UITableView, titleForFooterInSection section: Int) -> String? {
return "Made by. Lee"
}
참고자료 : 한성현 교수님 수업자료
'iOS프로그래밍실무 (3학년 1학기)' 카테고리의 다른 글
250508 iOS프로그래밍실무 10주차 (0) | 2025.05.08 |
---|---|
250501 iOS프로그래밍실무 9주차 (1) | 2025.05.07 |
250417 iOS프로그래밍실무 7주차 (0) | 2025.04.17 |
240410 iOS프로그래밍실무 6주차 (0) | 2025.04.10 |
250403 iOS프로그래밍실무 5주차 (0) | 2025.04.03 |