Travailler avec des codeurs et des modèles codables

  • Rversion finale: Xanadu
  • Mis à jour 1 août 2024
  • 1 minute de lecture
  • L’implémentation iOS de la Mobile SDK fournit les fonctionnalités supplémentaires des codeurs et des modèles codables.

    Énumération des codeurs

    L’énumération Coder englobe un JSONEncoder avec un JSONDecoder qui l’accompagne afin que les deux fournissent la même stratégie de codage. Étant donné que la plupart des API du cadre de travail 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 code et décode les dates à l’aide du formatage de date nonISO8601UTC , est suffisante. DateFormatter.nonISO8601UTC est un formateur de date statique fourni par le cadre de travail NowData. Il est responsable de l’encodage et du décodage des dates stockées par la ServiceNow plateforme dans le fuseau horaire UTC (GMT+0) et sont utilisées par l’API de 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 requis, par exemple lors de la gestion de formats de date spécifiques, vous pouvez créer un codeur personnalisé en fournissant JSONEncoder et JSONDecoder personnalisés 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 structures imbriquées

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