iOS Open API 기반 앱 개발 (3)
2022. 5. 26. 23:01ㆍiOS/강의 정리
반응형
iOS Open API 기반 앱 개발 (3)
iOS Open API 기반 앱 개발 (2)
iOS Open API 기반 앱 만들기(2) iOS) Open API 기반 iOS앱 개발 Open API 기반 iOS앱 개발 영화진흥위원회 API https://www.kobis.or.kr/kobisopenapi/homepg/main/main.do 영화진흥위원회 오픈API OPEN..
wlqkr.tistory.com
Swift에서 오류 처리
- 예외 처리(exception handling)
- 런타임 시 오류를 발견하여 응답하고 복구하는 과정
- Swift에서는 optional을 사용하여 값의 유무를 전달함으로써 작업의 성공/실패 유무를 판단할 수 있지만 작업이 실패할 때 코드가 적절히 응답할 수 있도록 함으로써 오류의 원인을 이해하는 데 도움을 줄 수 있다.
- 디스크상의 파일을 읽어서 처리하는 작업에서 발생할 수 있는 오류
- Swift 2.0 이후부터는 error handling 도입
Swift 오류 제어
- 오류가 발생하면 문제를 보정하는 방법을 시도하거나 사용자에게 알림으로써 오류를 처리
- Swift에서오류를처리할수있는네가지방법
- Throwing Functions을 이용한 오류 전파(Propagating Errors Using Throwing Functions)
- Do-Catch를 이용한 오류 처리(Handling Errors Using Do-Catch)
- Error를 Optional Values로 변환(Converting Errors to Optional Values)
- 오류 전파 비활성화(Disabling Error Propagation)
오류 발생 가능 함수의 호출 방식 (do~try~catch)
do {
try 오류 발생 코드
오류가 발생하지 않으면 실행할 코드
} catch 오류패턴1 { 처리 코드
} catch 오류패턴2 where 조건 { 처리 코드
} catch { 처리 코드
}
에러 핸들링
func getData() {
if let url = URL(string: movieURL) {
let session = URLSession(configuration: .default)
session.dataTask(with: url) { (data, response, error) in
if error != nil {
print(error!)
return
}
if let JSONdata = data { // data = Optional 형
print(JSONdata.response!)
let dataString = String(data: JSONData, encoding: .utf8)
print(dataString!)
let decoder = JSONDecoder()
do {
let decodeData = decoder.decode(MovieData.self, from: JSONdata) // JSON 객체 JSONdata를 MovieData형으로 디코딩
} catch {
print(error)
}
}
task.resume()
}
}
MovieData형 프로퍼티를 만들어 decodedData에 저장
- tableView(_:cellForRowAt:)에서 decodeData를 사용하기 위함.
- 클로저 안에서객체의 변수 또는 함수에 접근할 때 self를 붙여서 사용해야 한다.
var movieData: MovieData?
func getData() {
if let url = URL(string: movieURL) {
let session = URLSession(configuration: .default)
session.dataTask(with: url) { (data, response, error) in
if error != nil {
print(error!)
return
}
if let JSONdata = data { // data = Optional 형
print(JSONdata.response!)
let dataString = String(data: JSONData, encoding: .utf8)
print(dataString!)
let decoder = JSONDecoder()
do {
let decodeData = decoder.decode(MovieData.self, from: JSONdata) // JSON 객체 JSONdata를 MovieData형으로 디코딩
self.movieData = decodedData
} catch {
print(error)
}
}
task.resume()
}
}
- tableViewCell에 표시하기 위해 tableView(_: cellForRowAt:) 수정
cell.movieName.text = movieData?.boxOfficeResult.dailyBoxOfficeList[indexPath.row].movieNm
reloadData()
- 테이블뷰의 row와 section을 다시 로드
- https://developer.apple.com/documentation/uikit/uitableview/1614862-reloaddata
Apple Developer Documentation
developer.apple.com
func getData() {
if let url = URL(string: movieURL) {
let session = URLSession(configuration: .default)
session.dataTask(with: url) { (data, response, error) in
if error != nil {
print(error!)
return
}
if let JSONdata = data { // data = Optional 형
print(JSONdata.response!)
let dataString = String(data: JSONData, encoding: .utf8)
print(dataString!)
let decoder = JSONDecoder()
do {
let decodeData = decoder.decode(MovieData.self, from: JSONdata) // JSON 객체 JSONdata를 MovieData형으로 디코딩
self.movieData = decodedData
DispatchQueue.main.async {
self.table.reloadData()
}
} catch {
print(error)
}
}
task.resume()
}
}
*참고 : iOS 실무 프로그래밍 2022년 3-1 한성현 교수님 강의 중 내용 or 변형
반응형
'iOS > 강의 정리' 카테고리의 다른 글
iOS Open API 기반 앱 개발 (2) (0) | 2022.05.25 |
---|---|
iOS) Open API 기반 iOS앱 개발 (0) | 2022.05.24 |
iOS 프로그래밍 실무 2주차 강의 정리 (0) | 2022.03.16 |