티스토리 뷰
결혼준비를 하느라 제가 이것저것 못보고 살았네요.
얼마전에 개발을 위해서 자료를 보던중에 swift4.1에서 추가된 부분을 작게 적으려고 합니다.
간략하게 기능만 이야기를 하면 snake case를 더 이상 enum을 만들어서 처리하지 않아도 됩니다.
무슨 이야기냐면 저희는 변수명을 언더바가 들어간 스네이크를 잘 사용하지 않지만 서버는 이런걸 좋아하죠.
바로 설명으로 간략하게 정리만 하겠습니다. 옵션만 추가하게 되면 됩니다.
다음과 같은 json data 가 있다고 합시다.
1 2 3 4 5 6 7 | let json = """ { "silver_winner": "Sound", "gold_winner": "Light", "bronze_winner": "Unladen Swallow" } """.data(using: .utf8)! | cs |
struct를 이런 형태로 받고 싶은겁니다.
1 2 3 4 5 | struct OlympicEventResult: Codable { var goldWinner: String var silverWinner: String var bronzeWinner: String } | cs |
이전에는 이것을 CodingKey 이런걸 사용하여서 하나씩 매핑할 키를 넣어주어야 했습니다.
하지만. 이것을 쉽게 할수 있는 방법이 있습니다.
1 2 3 4 5 6 7 | let decoder = JSONDecoder() let decodeAndPrint = { print(try! decoder.decode(OlympicEventResult.self, from: json)) } decoder.keyDecodingStrategy = .convertFromSnakeCase decodeAndPrint() // Prints: "OlympicEventResult(goldWinner: "Light", silverWinner: "Sound", bronzeWinner: "Unladen Swallow")" | cs |
바로 keyDecodingStrategy를 설정하여 주는 겁니다.
오... 이제 그런 필요없는 CodingKey를 넣어주지 않아도 됩니다.
이것 관련해서 제가 Mirror를 이용해서 뭔가 만들고 있었는데, 소용이 없어졌군요 쩝. ㅎㅎ
글머 다들 즐거운 코딩 되시길...
'Mobile > iOS' 카테고리의 다른 글
swift. Type matching - 2. Type별 (0) | 2019.03.23 |
---|---|
swift. Type matching - 1. enum의 경우 (0) | 2019.03.23 |
RxSwift. Hot, Cold Observe (0) | 2018.12.21 |
print, debugPrint (0) | 2018.12.10 |
iOS. Associated References로 임의 객체 저장 (0) | 2018.10.16 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- enum
- git
- android
- docker
- ubuntu
- rxswift
- github
- ios
- centos8
- Codable
- Gradle
- nodejs
- golang
- php
- Java
- Xcode
- Spring
- CentOS
- cocoapods
- Windows
- windows10
- go
- MySQL
- Kotlin
- Linux
- tomcat
- war
- Python
- SWIFT
- intellij
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
글 보관함