Travailler avec des codeurs et des modèles codables

  • Rversion finale: Washingtondc
  • Mis à jour 1 févr. 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 de codeurenveloppe un JSONEncoder avec un JSONDecoder d’accompagnement 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 encode et décode les dates à l’aide du format de date non ISO8601UTC , 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 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 et le JSONDecoder personnalisés comme types associés du 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 une fonctionnalité permettant de décoder les structures imbriquées par chemin séparé par des points. Cette fonctionnalité facilite l’utilisation des données imbriquées en supprimant la nécessité d’utiliser la structure de couche et le décodage JSON imbriqué.