상세 컨텐츠

본문 제목

iOS프로그래밍_9주차_Open API 기반iOS앱 개발(1)RESTful/JSON/Open API

2026년도 1학기/iOS프로그래밍

by 멈뭉밈 2026. 5. 4. 15:58

본문

 

https://www.kobis.or.kr/kobisopenapi/homepg/main/main.do

 

영화진흥위원회 오픈API

OPEN API 서비스 영화진흥위원회 영화관입장권통합전산망에서 제공하는 오픈API 서비스로 더욱 풍요롭고 편안한 영화 서비스를 즐겨보세요.

www.kobis.or.kr

키를 만들고

 

 

https://kobis.or.kr/kobisopenapi/webservice/rest/boxoffice/searchDailyBoxOfficeList.json?key=자신의키targetDt=20260503

이렇게 뜸 

 

위에 순위와 같다 


 

 

 

https://codebeautify.org/jsonviewer

 

Best JSON Viewer and JSON Beautifier Online

Online JSON Viewer, JSON Beautifier and Formatter to beautify and tree view of JSON data - It works as JSON Pretty Print to pretty print JSON data.

codebeautify.org

 

 

 

 

 

json 데이터를 간편하게 확인할 수 있게 해주는 사이트

 

 

 

{
  "boxOfficeResult": {
    "boxofficeType": "일별 박스오피스",
    "showRange": "20260427~20260427",
    "dailyBoxOfficeList": [
      {
        "rnum": "1",
        "rank": "1",
        "rankInten": "0",
        "rankOldAndNew": "OLD",
        "movieCd": "20254121",
        "movieNm": "살목지",
        "openDt": "2026-04-08",
        "salesAmt": "432784450",
        "salesShare": "38.6",
        "salesInten": "-700312300",
        "salesChange": "-61.8",
        "salesAcc": "20954778170",
        "audiCnt": "41902",
        "audiInten": "-67177",
        "audiChange": "-61.6",
        "audiAcc": "2025660",
        "scrnCnt": "1114",
        "showCnt": "4129"
      },
      {
      
      ...
      
      }
    ]
  }
}

 

 

위와 같은 json 데이터의 데이터 모델을 swift 로 만들면 아래와 같다.

 

import Foundation

// 최상위 응답
struct BoxOfficeResponse: Codable {
    let boxOfficeResult: BoxOfficeResult
}

// boxOfficeResult
struct BoxOfficeResult: Codable {
    let boxofficeType: String
    let showRange: String
    let dailyBoxOfficeList: [DailyBoxOffice]

    enum CodingKeys: String, CodingKey {
        case boxofficeType
        case showRange
        case dailyBoxOfficeList
    }
}

// dailyBoxOfficeList 내부 객체
struct DailyBoxOffice: Codable {
    let rnum: String
    let rank: String
    let rankInten: String
    let rankOldAndNew: String
    let movieCd: String
    let movieNm: String
    let openDt: String
    let salesAmt: String
    let salesShare: String
    let salesInten: String
    let salesChange: String
    let salesAcc: String
    let audiCnt: String
    let audiInten: String
    let audiChange: String
    let audiAcc: String
    let scrnCnt: String
    let showCnt: String

    enum CodingKeys: String, CodingKey {
        case rnum
        case rank
        case rankInten
        case rankOldAndNew
        case movieCd
        case movieNm
        case openDt
        case salesAmt
        case salesShare
        case salesInten
        case salesChange
        case salesAcc
        case audiCnt
        case audiInten
        case audiChange
        case audiAcc
        case scrnCnt
        case showCnt
    }
}

 

 

 


 

 

URI vs URL

uri 와 url 차이

 

 


 

 

 

RESTful

 

 

 

RESTful하다는 것은 URL은 자원(데이터)을 나타내고, HTTP 메서드(GET, POST, PUT, DELETE 등)로 그 자원에 대한 행동을 표현하는 방식이다.

 

 


 

 

!~JSON 데이터 구조 2가지 : 객체, 배열~!

JSON의 데이터 구조 두가지 : 객체, 배열

 

 


 

 

원하는 데이터만 데이터모델로 만들기

 

 


 

 

 

 

API 설명 인증 HTTPS CORS
Cloudmersive 이미지 캡션, 얼굴 인식, NSFW 분류 apiKey
Discord Discord용 봇를 만들고 Discord를 외부 플랫폼에 통합합니다. OAuth O ?

 

 

 


 

 

공공 데이터 활용 사례 모음

https://www.data.go.kr/tcs/puc/selectPublicUseCaseListView.do

 

공공데이터 포털

국가에서 보유하고 있는 다양한 데이터를『공공데이터의 제공 및 이용 활성화에 관한 법률(제11956호)』에 따라 개방하여 국민들이 보다 쉽고 용이하게 공유•활용할 수 있도록 공공데이터(Datase

www.data.go.kr

 

 

제미나이 api 키

https://ai.google.dev/gemini-api/docs/api-key?hl=ko

 

Gemini API 키 사용  |  Google AI for Developers

Gemini API 키를 가져와 5분 이내에 빌드를 시작하세요.

ai.google.dev

 

 

 


실습


 

 

 

constraints 를 추가해서 table view가 화면에 꽉 차도록 설정한다.

 

아래 사진을 보면 네 개의 constraints 가 추가된 것을 확인할 수 있다.

 

 

 

 

func numberOfSections(in tableView: UITableView) -> Int {
        return 2
    }

UITableViewDataSource 채택했을 때,

필수 메서드는 아니지만 section 을 지정하려면 사용해야 한다.

 

기본적으로 1 이 되어 있다.

 

 

필수 메서드 X

 

프로토콜에 있는 메서드의 앞에 optional 이 있으면 필수 메서드가 아니다.

 

 

필수 메서드 O

 

위처럼 optional 이 없고 밑에 Required 가 있으면 프로토콜을 채택하면 반드시 구현해야 하는 필수 메서드이다.

 

 

 

identifier

 

처음 TableViewCell을 만들면 identifier가 비어 있는 것을 알 수 있다.

 

입력하면 자동으로 myCell 이라고 변경된 것을 알 수 있다.

 

 

 

 

 

 

아래 시험 문제 나옴

다운캐스팅 하기 전

 

 

다운캐스팅 한 후

 

위 처럼 다운캐스팅을 해야 myTableViewCell 형으로 바뀐다.

 

 

 

완성본

 

 

 

 

MovieKjh.zip
0.04MB

 

관련글 더보기