Como trabalhar com codificadores e modelos codificáveis

  • Versão de lançamento: Yokohama
  • Atualizado 30 de jan. de 2025
  • 1 min. de leitura
  • A implementação do iOS do Mobile SDK fornece a funcionalidade adicional de codificadores e modelos codáveis.

    Enumeração do codificador

    A enumeração do Coder envolve um JSONEncoder com um JSONDecoder que o acompanha para que ambos forneçam a mesma estratégia de codificação. Como muitas das APIs da estrutura do NowData que lidam com modelos codáveis dependem da codificação e decodificação do JSON, o codificador simplifica e padroniza a maneira de especificar codificadores e decodificadores. Normalmente, é suficiente usar o codificador padrão (.default), que codifica e decodifica datas usando a formatação de data não ISO8601UTC. O DateFormatter.nonISO8601UTC é um formatador de data estático fornecido pela estrutura NowData. Ela é responsável por codificar e decodificar datas que foram armazenadas pela plataforma ServiceNow no fuso horário UTC (GMT+0) e são usadas pela API da tabela no formato aaaa-MM-dd HH:MM:SS, usando um local e fuso horário do dispositivo em consideração.

    Se a codificação JSON personalizada for necessária, como ao lidar com formatos de data específicos, você poderá criar um codificador personalizado fornecendo o JSONEncoder e o JSONDecoder personalizados como os tipos associados do codificador personalizado. O codificador e o decodificador devem usar a mesma estratégia de codificação.

    Por exemplo:

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

    Extensão codificável para estruturas aninhadas

    A estrutura NowData fornece funcionalidade para decodificar estruturas aninhadas por caminho separado por pontos. Essa funcionalidade facilita o consumo de dados aninhados, eliminando a necessidade de usar a estrutura de wrapper e a decodificação JSON aninhada.