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