-
Codable 여러 타입 지원하기 (는 사실상 String)Tech 2020. 12. 17. 10:35
제곧내고...
Codable 을 이용하면 json -> struct 편하게 할수있다 그렇긴한데
내가 편한거지 서버에서 주는 값이 다르면 난해한 케이스가 발생한다
예를들어
key을 Int로 줄수도있고 String으로 줄수도있고 안드릴수도 있습니다.
이러면 음~~~...
Codable 은 타입을 지정해줘야하다보니 (물론 찾아보니 AnyType되는 라이브러리 만들긴했더라..) 대충 이렇게 기본적으로 쓰는데
struct Sample: Codable { var key: String? }
이 구조에 key에 Int 넣으면 터진다
펑~
struct Sample: Codable { var key: String? init(from decoder: Decoder) throws { let values = try decoder.container(keyedBy: CodingKeys.self) if let _str = try? values.decode(String.self, forKey: .key) { key = _str } else if let _int = try? String(values.decode(Int.self, forKey: .key)) { key = String(_int) } else { key = nil } } enum CodingKeys: String, CodingKey { case key } }
이렇게 써주면 되긴한다. (난 안드릴 수도 있습니다. 가 있어서 nil처리했지만 key에 optional 처리 안할꺼면 throw 으로 터트리자)
물론 제일 좋은건 서버에서 여러 케이스 줄꺼면 걍.... string 으로만 주면 고맙겠습니다...
'Tech' 카테고리의 다른 글
쿠버네티스 찍먹해보기 (0) 2021.08.21 iOS 개발시 Notification Service Extension 가 작동하지 않을때 (0) 2020.12.31 알뜰폰(MVNO) 사용기 (0) 2020.08.29 swift 스크롤 되는 메뉴바 만들기 (0) 2020.08.01 iOS 에서 시간계산이 (DateFormatter) 이상할때 (0) 2020.05.28