ページネーター API - iOS

  • リリースバージョン: Xanadu
  • 更新日 2024年08月01日
  • 所要時間:5分
  • Paginator クラスは、NowTableService を介したServiceNow テーブル API の呼び出しによって返されるレコード セットを反復処理するためのメソッドを提供します。これは、NowTableService paginator() メソッドによって返されるオブジェクトです。このメソッドをその環境の外部で呼び出さないでください。

    表 : 1. プロパティ
    名前 タイプ Description (説明)
    hasNext ブーリアン フェッチする次のページがあるかどうかを示すフラグ。
    有効な値:
    • true:次のページが使用可能です。
    • false:次のページは使用できません。
    hasPrevious ブーリアン フェッチする前のページがあるかどうかを示すフラグ。
    有効な値:
    • true:前のページが使用可能です。
    • false:前のページは利用できません。
    はビジー ブーリアン Paginator オブジェクトがデータのフェッチでビジー状態かどうかを示すフラグ。
    有効な値:
    • true:公開者がビジー状態です。
    • false:パブリッシャはビジー状態ではありません。
    isFinished ブーリアン Paginator オブジェクトが完了したかどうかを示すフラグ。ページネーターが終了するように設定されている場合、最後のページがフェッチされたときに Paginator オブジェクトのパブリッシャーは終了します。Paginator オブジェクトは、終了後にページを取得できません。追加情報については、 publisherShouldFinish パラメーターの説明を参照してください。
    有効な値:
    • true:パブリッシャーは終了しています。
    • false:パブリッシャーが完了していません。
    itemsPerPage 整数 ページごとにフェッチするアイテムの数。

    デフォルト値:20

    ページ数 整数 レコード セット内の合計ページ数。

    Paginatorオブジェクトがまだページを取得していない場合、このパラメータは Int.maxに設定されます。ServiceNowインスタンスに対して最初の要求が行われた後、ページ数はServiceNowインスタンスから受信した実際のページ数に更新されます。

    ページ 整数 ページネーションされたレコードセット内の現在のページ。
    publisher 文字列 ページネーションされたデータのストリームをサブスクライバーに提供するパブリッシャー。
    注:
    既定では、パブリッシャは終了しません。この動作を変更するには、 publisherShouldFinish プロパティを true に設定します。
    publisherShouldFinish ブーリアン 最後のページがフェッチされたときに Paginator オブジェクトのパブリッシャーを停止するかどうかを示すフラグ。Paginator オブジェクトは、終了後にページを取得できません。
    有効な値:
    • true:最後のページがフェッチされると、公開者は追加のデータを提供できなくなります。reset() メソッドは機能しなくなりました。
    • false:パブリッシャが終了することはなく、すべてのメソッドはナビゲーションに関係なく完全に動作します。

    デフォルト値:false

    ページネーター - first() throws

    返された結果の最初のページをフェッチします。

    このメソッドが最初のページを取得できない場合、 PaginationError がスローされます。

    表 : 2. パラメーター
    名前 タイプ 説明
    なし
    表 : 3. 返される内容
    タイプ 説明
    なし

    次のコード例は、このメソッドを呼び出す方法を示しています。

    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)
        }
      }
    }

    ページネーター - last() throws

    返された結果の最後のページをフェッチします。

    このメソッドが最後のページを取得できない場合、 PaginationError がスローされます。

    表 : 4. パラメーター
    名前 タイプ 説明
    なし
    表 : 5. 返される内容
    タイプ 説明
    なし

    次のコード例は、このメソッドを呼び出す方法を示しています。

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

    ページネーター - next() throws

    返された結果の次のページをフェッチします。

    フェッチするページがなくなると、メソッドは PaginationError をスローします。

    表 : 6. パラメーター
    名前 タイプ 説明
    なし
    表 : 7. 返される内容
    タイプ 説明
    なし

    次のコード例は、このメソッドを呼び出す方法を示しています。

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

    ページネーター - previous() throws

    返された結果の前のページをフェッチします。

    メソッドが前のページを取得できない場合は、 PaginationError をスローします。

    表 : 8. パラメーター
    名前 タイプ 説明
    なし
    表 : 9. 返される内容
    タイプ 説明
    なし

    次のコード例は、このメソッドを呼び出す方法を示しています。

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

    ページネーター - reset()

    ページネーターを最初のページにリセットしますが、戻り結果の最初のページは返しません。

    表 : 10. パラメーター
    名前 タイプ 説明
    なし
    表 : 11. 返される内容
    タイプ 説明
    なし

    次のコード例は、このメソッドを呼び出す方法を示しています。

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