제곧내고...
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 {
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' 카테고리의 다른 글
iOS 개발시 Notification Service Extension 가 작동하지 않을때 (0) | 2020.12.31 |
---|---|
Codable 여러 타입 지원하기 (는 사실상 String) (0) | 2020.12.17 |
알뜰폰(MVNO) 사용기 (0) | 2020.08.29 |
swift 스크롤 되는 메뉴바 만들기 (0) | 2020.08.01 |
iOS 에서 시간계산이 (DateFormatter) 이상할때 (0) | 2020.05.28 |
Swift 에서 휴대폰 번호 이쁘게 만들기 (0) | 2020.05.27 |