Travailler avec des codeurs et des modèles codables

  • Rversion finale: Yokohama
  • Mis à jour 30 janv. 2025
  • 1 minute de lecture
  • L’implémentation iOS de fournit Mobile SDK les fonctionnalités supplémentaires des codeurs et des modèles codables.

    Énumération des codeurs

    L’énumération Coder enveloppe un JSONEncoder avec un JSONDecoder qui l’accompagne afin que les deux fournissent la même stratégie de codage. Étant donné que de nombreuses API de l’infrastructure NowData qui gèrent les modèles codables reposent sur le codage et le décodage à partir de JSON, le codeur simplifie et normalise la façon de spécifier les encodeurs et les décodeurs. En règle générale, l’utilisation du codeur par défaut (.default), qui encode et décode les dates en utilisant le formatage de date nonISO8601UTC , est suffisante. Le formateur de date.nonISO8601UTC est un formateur de date statique fourni par le framework NowData. Il est responsable du codage et du décodage des dates qui ont été stockées par la plateforme dans le ServiceNow fuseau horaire UTC (GMT+0) et qui sont utilisées par l’API Table au format aaaa-MM-jj HH :MM :SS , en tenant compte des paramètres régionaux et du fuseau horaire d’un appareil.

    Si un codage JSON personnalisé est nécessaire, par exemple lors de la gestion de formats de date spécifiques, vous pouvez créer un codeur personnalisé en fournissant le JSONEncoder personnalisé et le JSONDecoder comme types associés au codeur personnalisé. L’encodeur et le décodeur doivent utiliser la même stratégie de codage.

    Par exemple :

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

    Extension codable pour les structures imbriquées

    Le cadre de travail NowData fournit une fonctionnalité permettant de décoder les structures imbriquées par des chemins séparés par des points. Cette fonctionnalité facilite l’utilisation des données imbriquées en supprimant la nécessité d’utiliser une structure de couche et un décodage JSON imbriqué.