コーダーと Codable モデルの操作
Mobile SDK の iOS 実装は、コーダーとコード化可能モデルの追加機能を提供します。
コーダー列挙
Coder 列挙体は、JSONEncoder を付随する JSONDecoder でラップして、両方が同じコーディング戦略を提供するようにします。Codable モデルを処理する NowData フレームワーク API の多くは JSON からのコーディングとデコードに依存しているため、 Coder はエンコーダーとデコーダーを指定する方法を簡素化および標準化します。通常は、ISO8601UTC 以外の日付形式を使用して日付をエンコードおよびデコードする既定のコーダー (.default) を使用するだけで十分です。DateFormatter.nonISO8601UTC は、NowData フレームワークによって提供される静的な日付フォーマッターです。これは、ServiceNow プラットフォームによって UTC (GMT+0) タイムゾーンで保存され、デバイスのロケールとタイムゾーンを考慮して yyyy-MM-dd HH:MM:SS 形式でテーブル API によって使用される日付のエンコードとデコードを担当します。
特定の日付形式を処理する場合など、カスタム JSON コーディングが必要な場合は、カスタム Coder の関連型としてカスタム JSONEncoder と JSONDecoder を指定することで、カスタム Coder を作成できます。符号化器と復号化器の両方で、同じ符号化戦略を使用する必要があります。
例:
let myEncoder = JSONEncoder()
myEncoder.dateEncodingStrategy = .formatted(.nonISO8601UTC)
let myDecoder = JSONDecoder()
myDecoder.dateDecodingStrategy = .formatted(.nonISO8601UTC)
let myCoder: Coder = .custom(myEncoder, myDecoder)ネスト構造のコード化可能拡張
NowData フレームワークは、ドット区切りのパスでネストされた構造をデコードする機能を提供します。この機能により、ラッパー構造とネストされた JSON デコードを使用する必要がなくなるため、ネストされたデータを簡単に使用できます。