ページネーター API - iOS
Paginator クラスは、NowTableService を介したServiceNow テーブル API の呼び出しによって返されるレコード セットを反復処理するためのメソッドを提供します。これは、NowTableService paginator() メソッドによって返されるオブジェクトです。このメソッドをその環境の外部で呼び出さないでください。
| 名前 | タイプ | Description (説明) |
|---|---|---|
| hasNext | ブーリアン | フェッチする次のページがあるかどうかを示すフラグ。 有効な値:
|
| hasPrevious | ブーリアン | フェッチする前のページがあるかどうかを示すフラグ。 有効な値:
|
| はビジー | ブーリアン | Paginator オブジェクトがデータのフェッチでビジー状態かどうかを示すフラグ。 有効な値:
|
| isFinished | ブーリアン | Paginator オブジェクトが完了したかどうかを示すフラグ。ページネーターが終了するように設定されている場合、最後のページがフェッチされたときに Paginator オブジェクトのパブリッシャーは終了します。Paginator オブジェクトは、終了後にページを取得できません。追加情報については、 publisherShouldFinish パラメーターの説明を参照してください。 有効な値:
|
| itemsPerPage | 整数 | ページごとにフェッチするアイテムの数。 デフォルト値:20 |
| ページ数 | 整数 | レコード セット内の合計ページ数。 Paginatorオブジェクトがまだページを取得していない場合、このパラメータは |
| ページ | 整数 | ページネーションされたレコードセット内の現在のページ。 |
| publisher | 文字列 | ページネーションされたデータのストリームをサブスクライバーに提供するパブリッシャー。 注: 既定では、パブリッシャは終了しません。この動作を変更するには、 publisherShouldFinish プロパティを true に設定します。 |
| publisherShouldFinish | ブーリアン | 最後のページがフェッチされたときに Paginator オブジェクトのパブリッシャーを停止するかどうかを示すフラグ。Paginator オブジェクトは、終了後にページを取得できません。 有効な値:
デフォルト値:false |
ページネーター - first() throws
返された結果の最初のページをフェッチします。
このメソッドが最初のページを取得できない場合、 PaginationError がスローされます。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| なし |
次のコード例は、このメソッドを呼び出す方法を示しています。
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 がスローされます。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| なし |
次のコード例は、このメソッドを呼び出す方法を示しています。
…
func last() {
result = nil
do {
try paginator.last()
} catch {
self.result = .failure(error)
}
}
…
ページネーター - next() throws
返された結果の次のページをフェッチします。
フェッチするページがなくなると、メソッドは PaginationError をスローします。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| なし |
次のコード例は、このメソッドを呼び出す方法を示しています。
…
func next() {
result = nil
do {
try paginator.next()
} catch {
self.result = .failure(error)
}
}
…
ページネーター - previous() throws
返された結果の前のページをフェッチします。
メソッドが前のページを取得できない場合は、 PaginationError をスローします。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| なし |
次のコード例は、このメソッドを呼び出す方法を示しています。
…
func previous() {
result = nil
do {
try paginator.previous()
} catch {
self.result = .failure(error)
}
}
…
ページネーター - reset()
ページネーターを最初のページにリセットしますが、戻り結果の最初のページは返しません。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| なし |
次のコード例は、このメソッドを呼び出す方法を示しています。
…
func reset() {
result = nil
paginator.reset()
}
…