API du paginateur : iOS

  • Rversion finale: Washingtondc
  • Mis à jour 1 févr. 2024
  • 3 minutes de lecture
  • La classe Paginator fournit des méthodes d’itération à travers un ensemble d’enregistrements renvoyé par un appel à l’API ServiceNow Table via NowTableService. Il s’agit de l’objet renvoyé par les méthodes paginator() NowTableService. N’appelez pas cette méthode en dehors de cet environnement.

    Tableau 1. Propriétés
    Nom Type Description
    hasNext Booléen Marqueur indiquant s’il existe une page suivante à extraire.
    Valeurs valides :
    • true : la page suivante est disponible.
    • false : la page suivante n’est pas disponible.
    hasPrécédent Booléen Marqueur indiquant s’il existe une page précédente à extraire.
    Valeurs valides :
    • true : la page précédente est disponible.
    • false : la page précédente n’est pas disponible.
    Isbusy Booléen Marqueur indiquant si l’objet Paginateur est occupé à extraire des données.
    Valeurs valides :
    • true : l’éditeur est occupé.
    • false : l’éditeur n’est pas occupé.
    isFinished (Terminé) Booléen Marqueur indiquant si l’objet Paginator est terminé. Lorsque le paginateur est configuré pour se terminer, l’éditeur de l’objet Paginator termine lorsque la dernière page a été récupérée. Un objet Paginator ne peut extraire aucune page une fois qu’il est terminé. Pour plus d’informations, consultez la publisherShouldFinish description du paramètre.
    Valeurs valides :
    • true : l’éditeur a terminé.
    • false : l’éditeur n’a pas terminé.
    itemsPerPage Entier Nombre d’éléments à extraire par page.

    Par défaut : 20

    nombre de pages Entier Nombre total de pages dans l’ensemble d’enregistrements.

    Lorsque l’objet Paginator n’a encore extrait aucune page, ce paramètre est défini sur Int.max. Une fois qu’une demande initiale a été envoyée à l’instance ServiceNow , le nombre de pages est mis à jour pour refléter le nombre réel de pages reçues de l’instance ServiceNow .

    Page Entier Page actuelle dans l’ensemble d’enregistrements paginés.
    éditeur Chaîne Éditeur qui fournit le flux de données paginées aux abonnés.
    Remarque :
    Par défaut, l’éditeur ne termine pas. Pour modifier ce comportement, définissez la publisherShouldFinish propriété sur true.
    publisherShouldFinish Booléen Marqueur indiquant si l’éditeur de l’objet Paginator doit être arrêté lorsque la dernière page a été récupérée. Un objet Paginator ne peut extraire aucune page une fois qu’il est terminé.
    Valeurs valides :
    • true : une fois la dernière page récupérée, l’éditeur n’est plus autorisé à fournir des données supplémentaires. La méthode reset() n’est plus fonctionnelle.
    • false : l’éditeur n’est jamais terminé et toutes les méthodes sont pleinement opérationnelles, quelle que soit la navigation.

    Valeur par défaut : false

    Paginateur : first() throws

    Récupère la première page des résultats renvoyés.

    Si cette méthode ne peut pas récupérer la première page, elle lève une PaginationError.

    Tableau 2. Paramètres
    Nom Type Description
    Aucun
    Tableau 3. Renvoie
    Type Description
    Néant

    L’exemple de code suivant montre comment appeler cette méthode.

    class PaginatorTestViewModel<T: JSONRepresentable>: ObservableObject {
      @Published var result: Result<String, Error>?
      private let paginator: Paginator<T>
      private var subscriptions = Set<AnyCancellable>()
    
      init(paginator: Paginator<T>) {
        self.paginator = paginator
        subscribeToPaginator()
      }
    
      private func subscribeToPaginator() {
        paginator.publisher
          .receive(on: DispatchQueue.main)
          .sink { [weak self] comp in
            if case .failure(let error) = comp {
              self?.result = .failure(error)
            }
          } receiveValue: { [weak self] jsonRepresentable in
            self?.result = .success(jsonRepresentable.jsonDescription)
          }
          .store(in: &subscriptions)
      }
    
      func first() {
        result = nil
        do {
          try paginator.first()
        } catch {
          self.result = .failure(error)
        }
      }
    }

    Paginateur : last() throws

    Récupère la dernière page des résultats renvoyés.

    Si cette méthode ne peut pas récupérer la dernière page, elle lève une PaginationError.

    Tableau 4. Paramètres
    Nom Type Description
    Aucun
    Tableau 5. Renvoie
    Type Description
    Néant

    L’exemple de code suivant montre comment appeler cette méthode.

    …
    func last() {
      result = nil
      do {
        try paginator.last()
      } catch {
        self.result = .failure(error)
      }
    }
    …

    Paginateur : next() throws

    Récupère la page suivante des résultats renvoyés.

    S’il n’y a plus de pages à extraire, la méthode lève une PaginationError.

    Tableau 6. Paramètres
    Nom Type Description
    Aucun
    Tableau 7. Renvoie
    Type Description
    Néant

    L’exemple de code suivant montre comment appeler cette méthode.

    …
    func next() {
      result = nil
      do {
        try paginator.next()
      } catch {
        self.result = .failure(error)
      }
    }
    …

    Paginateur : jets previous()

    Récupère la page précédente des résultats renvoyés.

    Si la méthode ne peut pas récupérer la page précédente, elle lève une PaginationError.

    Tableau 8. Paramètres
    Nom Type Description
    Aucun
    Tableau 9. Renvoie
    Type Description
    Néant

    L’exemple de code suivant montre comment appeler cette méthode.

    …
    func previous() {
      result = nil
      do {
        try paginator.previous()
      } catch {
        self.result = .failure(error)
      }
    }
    …

    Paginateur - reset()

    Réinitialise le paginateur à la première page, mais ne renvoie pas la première page des résultats de renvoi.

    Tableau 10. Paramètres
    Nom Type Description
    Aucun
    Tableau 11. Renvoie
    Type Description
    Néant

    L’exemple de code suivant montre comment appeler cette méthode.

    …
    func reset() {
      result = nil
      paginator.reset()
    }
    …