コーダーとコード可能モデルの操作

  • リリースバージョン: Yokohama
  • 更新日 2025年01月30日
  • 所要時間:2分
  • モバイル SDK の iOS 実装では、コーダーと Codable モデルの追加機能が提供されます。

    コーダーの列挙

    Coder 列挙体は、JSONEncoder を付随する JSONDecoder でラップし、両者が同じコーディング戦略を提供するようにします。Codable モデルを処理する NowData フレームワーク API の多くは JSON からのコーディングとデコードに依存しているため、 Coder はエンコーダーとデコーダーを指定する方法を簡素化および標準化します。通常は、非ISO8601UTCの日付形式を使用して日付をエンコードおよびデコードするデフォルトのコーダー(.default)を使用するだけで十分です。DateFormatter.nonISO8601UTC は、NowData フレームワークによって提供される静的日付フォーマッターです。これは、 ServiceNow プラットフォームによって UTC (GMT+0) タイムゾーンで保存され、デバイスのロケールとタイムゾーンを考慮して テーブル API によってyyyy-MM-dd HH:MM:SS 形式で使用される日付のエンコードとデコードを担当します。

    特定の日付形式を処理する場合など、カスタム JSON コーディングが必要な場合は、カスタム Coder の関連型としてカスタム JSONEncoderJSONDecoder を指定することで、カスタム Coder を作成できます。エンコーダーとデコーダーの両方で同じコーディング戦略を使用する必要があります。

    たとえば、次のようになります:

    let myEncoder = JSONEncoder()
    myEncoder.dateEncodingStrategy = .formatted(.nonISO8601UTC)
    let myDecoder = JSONDecoder()
    myDecoder.dateDecodingStrategy = .formatted(.nonISO8601UTC)
    
    let myCoder: Coder = .custom(myEncoder, myDecoder)

    ネストされた構造のコーディング可能な拡張

    NowData フレームワークは、ネストされた構造をドット区切りパスでデコードする機能を提供します。この機能により、ラッパー構造とネストされた JSON デコードを使用する必要がなくなるため、ネストされたデータを簡単に利用できるようになります。