코더 및 Codable 모델에 대한 작업
의 Mobile SDK iOS 구현은 코더 및 Codable 모델의 추가 기능을 제공합니다.
코더 열거형
Coder 열거형은 JSONEncoder를 함께 JSONDecoder와 함께 래핑하여 둘 다 동일한 코딩 전략을 제공하도록 합니다. Codable 모델을 처리하는 많은 NowData 프레임워크 API가 JSON의 코딩 및 디코딩에 의존하기 때문에 Coder 는 인코더 및 디코더를 지정하는 방법을 단순화하고 표준화합니다. 일반적으로 nonISO8601UTC 날짜 형식을 사용하여 날짜를 인코딩 및 디코딩하는 기본 코더(.default)를 사용하면 충분합니다. DateFormatter.nonISO8601UTC는 NowData 프레임워크에서 제공하는 정적 날짜 포매터입니다. 플랫폼에서 UTC(GMT+0) 표준 시간대로 저장한 ServiceNow 날짜 인코딩 및 디코딩을 담당하며, 디바이스의 로캘 및 표준 시간대를 고려하여 테이블 API에서 yyyy-MM-dd HH:MM:SS 형식으로 사용됩니다.
특정 날짜 형식을 처리하는 경우와 같이 사용자 지정 JSON 코딩이 필요한 경우 사용자 지정 코더의 관련 유형으로 사용자 지정 JSONEncoder 및 JSONDecoder를 제공하여 사용자 지정 Coder를 만들 수 있습니다. 인코더와 디코더는 모두 동일한 코딩 전략을 사용해야 합니다.
예:
let myEncoder = JSONEncoder()
myEncoder.dateEncodingStrategy = .formatted(.nonISO8601UTC)
let myDecoder = JSONDecoder()
myDecoder.dateDecodingStrategy = .formatted(.nonISO8601UTC)
let myCoder: Coder = .custom(myEncoder, myDecoder)중첩된 구조에 대한 Codable 확장
NowData 프레임워크는 점으로 구분된 경로로 중첩된 구조를 디코딩하는 기능을 제공합니다. 이 기능을 사용하면 래퍼 구조 및 중첩된 JSON 디코딩을 사용할 필요가 없으므로 중첩된 데이터를 더 쉽게 사용할 수 있습니다.