250515 iOS프로그래밍실무 11주차

2025. 5. 15. 15:59·iOS프로그래밍실무 (3학년 1학기)

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"
    }

 

MoviePSJ.zip
0.06MB

참고자료 : 한성현 교수님 수업자료

저작자표시 (새창열림)

'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
'iOS프로그래밍실무 (3학년 1학기)' 카테고리의 다른 글
  • 250508 iOS프로그래밍실무 10주차
  • 250501 iOS프로그래밍실무 9주차
  • 250417 iOS프로그래밍실무 7주차
  • 240410 iOS프로그래밍실무 6주차
Z2AE
Z2AE
  • Z2AE
    딩코.log
    Z2AE
  • 전체
    오늘
    어제
    • 분류 전체보기 (66) N
      • C++ 프로그래밍 (1학년 2학기) (12)
      • 서버프로그래밍 (1학년 2학기) (0)
      • C# 프로그래밍 (1학년 2학기) (2)
      • 프론트엔드 웹개발 (1학년 2학기) (2)
      • 데이터베이스 (2학년 1학기) (8)
      • 자료구조 (2학년 1학기) (2)
      • JAVA프로그래밍 (2학년 1학기) (7)
      • PHP쇼핑몰실무 (2학년 1학기) (2)
      • 운영체제 (2학년 1학기) (3)
      • 모바일게임개발 (2학년 1학기) (1)
      • iOS프로그래밍 (2학년 2학기) (11)
      • 네트워크보안 (2학년 2학기) (1)
      • iOS프로그래밍실무 (3학년 1학기) (10) N
      • 소프트웨어설계 (3학년 1학기) (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
Z2AE
250515 iOS프로그래밍실무 11주차
상단으로

티스토리툴바