티스토리 뷰

결혼준비를 하느라 제가 이것저것 못보고 살았네요.

얼마전에 개발을 위해서 자료를 보던중에 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
«   2024/05   »
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
글 보관함