Roen의 iOS 개발로그

멋사 앱스쿨 1기 Day 46 : OpenAPI 사용하기, Async/Await 맛보기

by Steady On

OpenAPI에서 JSON 불러오기

오늘은 어제에 이어서 openAPI에서 JSON을 받아오고 구조체를 통해서 불러오는 실습을 이어서 했다. 어제는 솔직히 구조체 만들기 너무너무 귀찮아서 다 Dictionary 타입으로 받아와서 양파까듯이 하나하나 까면서 데이터를 가져왔다. 오늘은 구조체로 가져오는게 (강제되기도 했고) 그게 정석인것 같아서 그렇게 하고 싶어져서 해봤다. 그랬더니 JSON to Swift 웹 사이트에서 간단하게 struct로 변환을 해줘서 막상 해보니 오히려 더 간단하게 할 수 있는 것 같았다.

그러면서 init(decode 같은 코드들을 이해하기 위해서 이런저런 블로그 글들을 찾아봤는데,

Swift) Codable - JSON을 쉽게 Encoding / Decoding 하자

 

Swift) Codable - JSON을 쉽게 Encoding / Decoding 하자

안녕하세요 :) 소들입니다 오늘은 대망의 Codable을 다뤄보려고 합니다... 왜 대망이냐면..... Swift로 개발한다고 하면서 Codable을 사용 안해본 개발자는 없을테니까............ 😱ㄴㅏ야 나~~~ 쨌든 그

babbab2.tistory.com

그중에서는 이게 가장 심플하게 설명이 잘 되어 있는 것 같다. 그리고 추가적으로 조금 더 자세한 설명글

[Swift] Codable - Decoding 방법

 

[Swift] Codable - Decoding 방법

이전 포스트는 Codable의 Encodable에 대해 알아 보았습니다. 이번 포스트는 Codable의 Decodable에 대해 알아보도록 하겠습니다. Decodable JSON 데이터를 디코딩 하는 방법에 대해 알아보도록 하겠습니다. De

jinnify.tistory.com

일단 구조체는 무조건 Codable이나 Decodable 프로토콜을 따라야 한다.(둘 중에는 Codable을 많이 씀)

Codable 프로토콜 : Encodable + Decodable

  • Encodable : data를 Encoder에서 변환해주려는 프로토콜로 바꿔주는 것(ex.모델을 json으로 인코딩)
  • Decodable : data를 원하는 모델로 Decode 하는 것

아마 일방적으로 데이터를 읽기만 하기보다 Add 되거나 하는 경우도 생각해서 Codable을 범용적으로 쓰는게 아닌가 싶다. 일단 이 프로토콜을 채택하면, JSON Data의 key 값과 동일한 이름의 구조체 변수에 value값을 파싱하고 파싱된 구조체를 리턴한다. 그래서 JSON Data의 key와 변수명이 맞지 않으면 Codable 프로토콜에 어긋난다는 오류가 뜨고, Decoding Fail로 간주된다.

그런데 만약에 key가 예약어라던지, 다른 이름으로 쓰고 싶다던지 하면 어떡해야할까? 그럴땐 enum을 String과 CodingKeys 프로토콜을 채택해준 다음 키를 어떤 변수명으로 받을지 일일이 정의해주면 된다. 근데 이때 주의할 점은 하나의 키만 다른 이름으로 받을 거라도 해당 구조체에 있는 모든 프로퍼티를 다 정의해줘야 한다는 것이다….ㅎ

그리고 혹시나 JSON의 정보가 바뀐다거나 해서 key가 없어질때 등을 대비해서 init(from decoder: Decoder) 를 써서 미리 정의해둘 수도 있다. 그리고 대체로 값이 null이라던지 등등 data에 어떤 변수가 있을 수 있으므로 가급적 타입은 옵셔널로 정의하는게 좋다는 것 같다.

Async/Await

진짜 솔직하게 말하면, 강의들으면서 코드 따라쳐보다가 강사님이 기존 코드를 복붙하시는 바람에 따라쓰지 못하게 되었고, 그렇게 손을 놓고 열심히 보고 있다가 갑자기 꾸벅꾸벅 졸았다. 근데 오늘은 다행히 뭔가 구체적인 개념설명 같은 건 없었고 이런식으로 쓰면 된다하면서 실제로 코딩하는걸 보여주신 것 같다. 그래서 강사님 코드를 제공받아서 실제 데이터를 앱에 바로 실시간으로 불러다가 적용하는 실습을 했다. 강사님 코드는 뭔가 범용성이 떨어지는 코드여서 제네릭을 사용해서 json 정보를 담은 url이 있으면 그게 뭐든 불러올 수 있는 코드를 만들었다!!! 노션에 저장해놓고 앞으로 두고두고 써먹어야지!!

그리고 이건 팀원분이 공유해주신 async, await에 대한 간단하고 쉬운 설명

동시성 (Concurrency)

 

동시성 (Concurrency) - Swift

한 동시성 도메인에서 다른 동시성 도메인으로 공유될 수 있는 타입을 전송 가능 타입 (sendable type) 이라고 합니다. 예를 들어, 행위자 메서드로 호출될 때 인자로 전달되거나 작업의 결과로 반환

bbiguduk.gitbook.io

이건 Swift 공식문서에 나오는 동시성에 대한 설명

Swift: Async와 Await, 등장 배경과 사용법

 

Swift: Async와 Await, 등장 배경과 사용법

Swift 5.5부터 추가된 Async와 Await, 기존의 비동기 처리 방식과 Async, Await의 등장 배경, 그리고 어떻게 사용하는지 알아보자.

medium.com

그리고 이건 다른 분이 추천해주신 블로그 글!

오늘은 알고리즘 스터디 하느라고 다 확인하지는 못했는데, 내일은 꼭 읽어보도록 해야겠다.

그리고 되면 디자인패턴 공부를 슬슬 시작해야겠다.

'Education > 멋사 앱스쿨 1기' 카테고리의 다른 글

멋사 앱스쿨 1기 Day 19  (0) 2022.10.13
멋사 앱스쿨 1기 Day 18  (0) 2022.10.12
멋사 앱스쿨 1기 3주차 회고  (0) 2022.10.11
멋사 앱스쿨 1기 Day 17  (0) 2022.10.08
멋사 앱스쿨 1기 Day 16  (1) 2022.10.07

블로그의 정보

Roen의 iOS 개발로그

Steady On

활동하기