View

300x250

[iOS 앱 개발 - Swift] Swift 에서 JSON 다루기

edwith의 부스트코스 iOS 앱개발 강의를 들으며 공부한 내용을 정리한 포스팅이예요. 이 글에 나오는 예제파일이나 코드는 강의에 나오는 코드입니다. 아이폰 앱개발에 관심이 있으신 분은 아래 링크를 확인해보세용

 

https://www.edwith.org/boostcourse-ios/lecture/20146/

 

[LECTURE] 3) JSON 다루기 : edwith

강의 영상 - 부스트코스

www.edwith.org


JSON 다루기

이번 글에서는 JSON 데이터로 Encode, Decode 하는 방법과 이용하는 방법에 대해 작성해볼게요. 이에 대한 설명은 앞 포스팅에 작성되어 있습니다!

JSON 데이터 형식만들기

일단, JSON 데이터로 사용될 파일을 가져와줍니다. 저는 강의에 예제파일로 올라온 데이터를 활용할거예요. 요 파일을 Asset으로 Import 해줍니다. 따로 사용할 파일이 있으면 그걸 넣어주면 될거예요. ( 강의자료이기 때문에 여기에 업로드 하진 않을게요. 위에 링크로 달아두었으니, 확인해보시기 바랍니다. 아마 다운로드는 그냥 할 수 있을거예요! )

 

 

그다음, 가져온 JSON 파일의 형식에 맞게 새로운 데이터 포멧을 만들어줍시다. 새로운 Swift 파일을 하나 만들어주고, 각 데이터의 타입에 맞게 Key를 작성해줍니다. 값을 디코딩할 때는 Key를 통해 데이터를 하나씩 가져오게되고, 인코딩할 때는 데이터를 하나씩 Key에 맞게 작성하게 됩니다. Encoding, Decoding을 해야하기 때문에, Codable 프로토콜을 달아주는 것을 잊으면 안됩니당!

 

 

여기에서 name과 age, city와 country를 한번에 간단히 가져오기 위해 아래와 같은 변수를 작성해줄게요.

 

 

 

만약에 address_info라고 작성된 이 이름이 마음에 안든다! 코딩하는데 이게 좀 거슬린다! 하면 일단 그 변수의 이름을 원하는 이름으로 바꿔주고, 아래 코드처럼 enum CodingKeys: String, CodingKey 를 작성해줍니다. 그 아래에 case로 각 항목의 이름을 나눠 적어준 뒤, JSON 데이터로 저장될 또는 저장된 Key 의 이름과 같다면 그대로 남겨두고, 다르다면 JSON 데이터의 Key에 맞는 이름으로 바꿔줍니다. 

 

작성해준 데이터 포멧은 다음과 같겠네요!

 

JSON 데이터 가져오기

JSON 데이터를 가져와서 TableView에 넣어주는 것을 한번 해볼게요. 아래와 같은 형식을 목표로 합니다.

 

 

우선 스토리보드에서 TableView를 만들고 거기에 TableViewCell을 넣어주고 (위의 형식으로 만들기 위해 Style을 SubTitle로 지정해줍니다 + Identifier를 'cell'로 정해줄게요), TableView의 DataSource와 Delegate를 연결해주기 위해서 ViewController를 작성하러 갑시다.

 

 

기본적인 틀을 다 작성해줬어요. 이제 하나하나 채워넣어봅시다 ㅋㅋㅋㅋ

 

아까 Friend라는 struct를 하나 만들어줬는데, 이걸 타입으로 가지는 배열로 만들어서 데이터를 관리해주도록 합시다. 그리고, ViewDidLoad 메서드에서 여기에 데이터를 가져와 넣어주도록 합시다. 요 메서드에서 JSONDecoder 를 하나 만들어주고, friendData에 에셋으로 넣어준 데이터를 가져와 넣어줍니다. 여기서 guard let 을 사용해서 안전하게 데이터를 가져와주도록 합시다. 데이터를 가져왔다면 decode를 해줍시다. 이를 friends 배열에 집어넣어주고, TableView에 데이터를 담기 위해 ReLoad() 해줍니다.

 

 

이제 TableView를 꾸며주는 Delegate들을 수정하러 가봅시당!

우선, Section내의 Row의 개수를 반환할 때는 Friends 배열의 원소의 개수를 반환하면 되겠네요. Cell을 꾸밀 때는, 메모리효율을 위해 dequeue를 해줄게요. 가져온 cell에서 textLabel에 index에 맞는 이름과 나이 ( 아까 변수로 합쳐뒀던게 여기서 사용됩니다 ), detailTextLabel에는 도시와 국가를 넣어줄게요. 그리고 이 cell을 return 해줍니다.

 

 

이렇게 작성해주고, IBOutlet들을 다 연결해주고 + TableViewDelegate와 TableViewDataSource 까지 연결해주면 다음과 같은 빌드 결과를 얻을 수 있습니다!

 


이 글은 edwith의 부스트코스 iOS 프로그래밍 강의를 보면서 공부한 내용을 정리한 글입니다. 프로그래밍에 기본기가 있으신 분이면서 아이폰 앱개발에 입문하려고 하는 분에게 추천하는 강의입니다. 5개의 챕터로 구성되어있고, 하나의 챕터마다 프로젝트를 하나 진행하면서 작은 앱을 만드는 과제를 수행할 수 있습니다. 직접 앱을 만들면서 공부를 하니 확실히 머리에 Xcode를 이용해 개발하는 과정과 방법이 쏙쏙 들어오는 기분이예요 ㅋㅋㅋ 

 

관심이 있으신 분이라면 아래 링크를 통해 강의가 어떤지 한번 확인해보세요! 모든 강의와 강의자료가 무료로 개방되어 있고, 네이버 아이디로도 이용할 수 있습니다!

 

https://www.edwith.org/boostcourse-ios/

 

[부스트코스] iOS 프로그래밍 강좌소개 : edwith

- 부스트코스

www.edwith.org

 

320x100
Share Link
reply
반응형
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30