NowTableService クラス:iOS
NowTableService クラスには、既存のServiceNowテーブルのレコードに対して作成、読み取り、更新、および削除の操作を実行できるようにする関数が用意されています。
| 名前 | タイプ | 説明 |
|---|---|---|
| 構成 | NowServiceConfiguration | サービスの初期化時に提供された構成設定。 |
NowTableService - create<Model: SysIdentifiableModel>(_ model: Model, in tableName: String, coder: Coder, writeOptions: FieldWriteOptions, configuration: FetchConfiguration) 非同期スロー
指定された Codable モデルを指定されたテーブルに挿入します。
モデルで新しいレコードを作成するには、モデルは SysIdentifiableModel プロトコルに準拠している必要があります。通常、各テーブルには独自のモデルがあります。
モデルの sys_Id パラメーターはプラットフォームによって生成されるため sysId 、 ServiceNow 作成中に無視されます。生成されたプラットフォームは、completionハンドラーの結果モデルで返されます。sys_IdServiceNow
| 名前 | タイプ | 説明 |
|---|---|---|
| モデル | SysIdentififiable Model | テーブルに挿入するフィールドのモデル定義。 |
| テーブル名の内 | 文字列 | レコードを書き込むテーブルの名前 ( インシデントなど)。 |
| コーダー | コーダー | オプション。インスタンスとの間でServiceNow送受信されるデータのエンコードまたはデコードに使用するコーダー。可能な値:
デフォルト:.default |
| 書き込みオプション | フィールド書き込みオプション | オプション。レコードに書き込まれるデータに適用する構成オプション。 デフォルト:nil |
| 構成 | フェッチ構成 | オプション。返されるレコードを定義するフィルター、ページネーションページサイズ制限、取得するフィールド、フィールドに含める内容など、取得されたレコードに適用する構成。 デフォルト:nil - すべてのレコードが返されます。 |
| タイプ | 説明 |
|---|---|
| モデル | メソッドが成功した場合に返されます。sys_Idを含む、指定されたテーブルに挿入されたコード化可能なモデル。このsys_idを使用して、今後のメソッド呼び出しでこのレコードを参照します。 |
| NowDataError | メソッドが失敗したときにスローされます。
|
次のコード例は、このメソッドを呼び出す方法を示しています。
struct User: SysIdentifiableModel {
var sysId: String = ""
var name: String
}
let service: NowTableService = ...
let user = User(name: "Ash Williams")
do {
let result = try await service.create(user, in: “sys_user”)
} catch {
...
}
NowTableService - create<Model: SysIdentifiableModel>(_ model: Model, in tableName: String, coder: Coder, writeOptions: FieldWriteOptions, configuration: FetchConfiguration, completion: @escaping (Result<Model, NowDataError>))
指定された Codable モデルを指定されたテーブルに挿入し、ハンドラーを実行します completion 。
SysIdentifiableModel プロトコルに準拠している必要があります。通常、各テーブルには独自のモデルがあります。たとえば、次のようになります。struct User: SysIdentifiableModel {
var sysId: String = ""
var name: String
}
let service: NowTableService = ...
let user = User(name: "Ash Williams")
service.create(Incident(fields: fields), in: tableName, writeOptions: writeOptions, configuration: fetchConfiguration) { [weak self] result in
switch result {
case .success(let newUser):
/// 'newUser' contains the platform assigned 'sys_id', use in subsequent 'update' or 'delete' calls.
case .failure(let error):
...
}
}モデルの sys_Id パラメーターはプラットフォームによって生成されるため sysId 、 ServiceNow 作成中に無視されます。生成されたプラットフォームは、completionハンドラーの結果モデルで返されます。sys_IdServiceNow
| 名前 | タイプ | 説明 |
|---|---|---|
| モデル | SysIdentififiable Model | テーブルに挿入するフィールドのモデル定義。 |
| テーブル名の内 | 文字列 | レコードを書き込むテーブルの名前 ( インシデントなど)。 |
| コーダー | コーダー | オプション。インスタンスとの間でServiceNow送受信されるデータのエンコードまたはデコードに使用するコーダー。可能な値:
デフォルト:.default |
| 書き込みオプション | フィールド書き込みオプション | オプション。レコードに書き込まれるデータに適用する構成オプション。 デフォルト:nil |
| 構成 | フェッチ構成 | オプション。返されるレコードを定義するフィルター、ページネーションページサイズ制限、取得するフィールド、フィールドに含める内容など、取得されたレコードに適用する構成。 デフォルト:nil - すべてのレコードが返されます。 |
| 完了 | @escaping (result<model, nowDataError>) | 指定されたデコード可能モデルを作成した後に実行する完了ハンドラー。 完了ハンドラーの値を返します。
|
| タイプ | 説明 |
|---|---|
| なし |
struct User: SysIdentifiableModel {
var sysId: String = ""
var name: String
}
let service: NowTableService = ...
let user = User(name: "Ash Williams")
service.create(Incident(fields: fields), in: tableName, writeOptions: writeOptions, configuration: fetchConfiguration) { [weak self] result in
switch result {
case .success(let newUser):
/// 'newUser' contains the platform assigned 'sys_id' to use in subsequent update or delete calls.
case .failure(let error):
...
}
}
NowTableService - create<Model: SysIdentifiableModel>(model: Model, in tableName: String, path: String = Constants.resultPath, coder: Coder = .default, writeOptions: FieldWriteOptions? = nil, configuration: FetchConfiguration = nil)
指定されたテーブルに 1 つのコード化可能モデルを挿入します。
SysIdentifiableModel プロトコルに準拠している必要があります。通常、各テーブルには独自のモデルがあります。たとえば、次のようになります。struct User: SysIdentifiableModel {
var sysId: String = ""
var name: String
}
let service: NowTableService = ...
let user = User(name: "Ash Williams")
service.create(Incident(fields: fields), in: tableName, writeOptions: writeOptions, configuration: fetchConfiguration) { [weak self] result in
switch result {
case .success(let newUser):
/// 'newUser' contains the platform assigned 'sys_id', use in subsequent 'update' or 'delete' calls.
case .failure(let error):
...
}
}receiveValue コールバックモデルで返されます。| 名前 | タイプ | 説明 |
|---|---|---|
| モデル | SysIdentififiable Model | テーブルに挿入する SysIdentififiableModel モデル。 |
| テーブル名の内 | 文字列 | レコードを書き込むテーブルの名前 ( インシデントなど)。 |
| path | 文字列 | オプション。入れ子になった型のドット区切りパス。たとえば、 result または foo.bar.baz を指定すると、より詳細なネストができます。デフォルト: |
| コーダー | コーダー | オプション。インスタンスとの間でServiceNow送受信されるデータのエンコードまたはデコードに使用するコーダー。可能な値:
デフォルト:.default |
| 書き込みオプション | フィールド書き込みオプション | オプション。レコードに書き込まれるデータに適用する構成オプション。 デフォルト:nil |
| 構成 | フェッチ構成 | オプション。返されるレコードを定義するフィルター、ページネーションページサイズ制限、取得するフィールド、フィールドに含める内容など、取得されたレコードに適用する構成。 デフォルト:nil - すべてのレコードが返されます。 |
| タイプ | 説明 |
|---|---|
| AnyPublisher<Model,NowDataError> | 成功:指定されたテーブルに挿入されたコード化可能なモデル (次を含む sys_Id)。このsys_idを使用して、今後のメソッド呼び出しでこのレコードを参照します。 エラー:NowDataError @escaping (result<model, nowDataError>) |
ユーザー [sys_user] テーブルに単一のレコードを挿入する方法を示します。
struct User: SysIdentifiableModel {
var sysId: String = ""
var name: String
}
let service: NowTableService = ...
let user = User(name: "Ash Williams")
let publisher: AnyPublisher<User, NowDataError> = service.create(user, in: "sys_user")
publisher
.subscribe(on: DispatchQueue.global())
.receive(on: DispatchQueue.main)
.sink { [weak self] completion in
...
} receiveValue: { [weak self] newUser in
/// 'newUser' contains the ServiceNow platform assigned 'sys_id' to use in subsequent update and delete calls.
...
}
.store(in: &subscriptions)
NowTableService - createRecord(withfields: [FieldName: FieldValue], in tableName: String, writeOptions: FieldWriteOptions? = nil, configuration: FieldReadConfiguration? = nil) 非同期スロー
指定されたテーブルに、指定されたフィールドを含むレコードを挿入します。
let dataPublisher: AnyPublisher<Data, NowDataError> = ...
let recordsPublisher: AnyPublisher<[NowRecord], NowDataError> = myPublisher.convertToRecords()プリフィックス sys_ を持つフィールドは、通常、自動的に生成されるシステムパラメーターであり、更新することはできません。指定されておらず、システムによって自動生成されないフィールドは、関連付けられたデータタイプの null 値に設定されます。| 名前 | タイプ | 説明 |
|---|---|---|
| フィールドあり | [フィールド名: フィールド値] | レコードに含めるフィールドの名前と値のペア。 |
| テーブル名の内 | 文字列 | レコードを書き込むテーブルの名前 ( インシデントなど)。 |
| 書き込みオプション | フィールド書き込みオプション | オプション。レコードに書き込まれるデータに適用する構成オプション。 デフォルト:nil |
| 構成 | フェッチ構成 | オプション。返されるレコードを定義するフィルター、ページネーションページサイズ制限、取得するフィールド、フィールドに含める内容など、取得されたレコードに適用する構成。 デフォルト:nil - すべてのレコードが返されます。 |
| タイプ | 説明 |
|---|---|
| データ | メソッドが成功した場合に返されます。新しいレコードを含むデータオブジェクト。 |
| NowDataError | メソッドが失敗したときにスローされます。
|
次のコード例は、このメソッドを呼び出す方法を示しています。
do {
let dataResult: Data = try await tableService.createRecord(with: fields, in: tableName, writeOptions: writeOptions, configuration: configuration)
let recordResult: NowRecord = dataResult.convertToRecord()
} catch {
print("Record creation failed with NowDataError: \(error)")
}
NowTableService - createRecord(with fields: [FieldName: FieldValue], in tableName: String, writeOptions: FieldWriteOptions, configuration: FieldReadConfiguration, completion: @escaping (Result<Data, NowDataError>)
指定されたテーブルに指定されたレコードを挿入し、レコードが保存された後にハンドラーを実行します completion 。
let dataPublisher: AnyPublisher<Data, NowDataError> = ...
let recordsPublisher: AnyPublisher<[NowRecord], NowDataError> = myResult.convertToRecords()プリフィックス sys_ を持つフィールドは、通常、自動的に生成されるシステムパラメーターであり、更新することはできません。指定されておらず、システムによって自動生成されないフィールドは、関連付けられたデータタイプの null 値に設定されます。| 名前 | タイプ | 説明 |
|---|---|---|
| フィールドあり | [フィールド名: フィールド値] | レコードに含めるフィールドの名前と値のペア。 |
| テーブル名の内 | 文字列 | レコードを書き込むテーブルの名前 ( インシデントなど)。 |
| 書き込みオプション | フィールド書き込みオプション | オプション。レコードに書き込まれるデータに適用する構成オプション。 デフォルト:nil |
| 構成 | FieldReadConfiguration | オプション。返すフィールドとフィールドに含める内容を指定する構成オプション。 デフォルト:nil |
| 完了 | @escaping (result<data, nowDataError>) | レコードが取得された後に実行する完了ハンドラー。 戻り値:
|
| タイプ | 説明 |
|---|---|
| なし |
次のコード例は、この関数を呼び出す方法を示しています。
let fields = ["short_description" : "test description"]
let writeOptions: FieldWriteOptions = [.suppressAutoSysField, .treatInputValuesAsDisplayValues]
let readConfiguration = FieldReadConfiguration(includeFields: ["number", "short_description"])
tableService.createRecord(with: fields, in: tableName, writeOptions: writeOptions, configuration: readConfiguration) { [weak self] result in
switch result {
case .success(let dataResult):
let recordResult: NowRecord = dataResult.convertToRecord()
case .failure(let error):
print("Record creation failed with NowDataError: \(error)")
}
}
NowTableService - createRecord(withfields: [FieldName: FieldValue], in tableName: String, writeOptions: FieldWriteOptions? = nil, configuration: FieldReadConfiguration? = nil)
指定されたテーブルに、指定されたフィールドを含むレコードを挿入します。
let dataPublisher: AnyPublisher<Data, NowDataError> = ...
let recordsPublisher: AnyPublisher<[NowRecord], NowDataError> = myPublisher.convertToRecords()プリフィックス sys_ を持つフィールドは、通常、自動的に生成されるシステムパラメーターであり、更新することはできません。指定されておらず、システムによって自動生成されないフィールドは、関連付けられたデータタイプの null 値に設定されます。| 名前 | タイプ | 説明 |
|---|---|---|
| フィールドあり | [フィールド名: フィールド値] | レコードに含めるフィールドの名前と値のペア。 |
| テーブル名の内 | 文字列 | レコードを書き込むテーブルの名前 ( インシデントなど)。 |
| 書き込みオプション | フィールド書き込みオプション | オプション。レコードに書き込まれるデータに適用する構成オプション。 デフォルト:nil |
| 構成 | フェッチ構成 | オプション。返されるレコードを定義するフィルター、ページネーションページサイズ制限、取得するフィールド、フィールドに含める内容など、取得されたレコードに適用する構成。 デフォルト:nil - すべてのレコードが返されます。 |
| タイプ | 説明 |
|---|---|
| AnyPublisher<Data, NowDataError> | 成功:更新されたレコードを含むデータオブジェクト。 エラー:NowDataError
|
この例では、指定されたテーブルと指定されたフィールドにレコードを挿入する関数を作成する方法を示します。呼び出しの出力は ByteArray で、データを任意のモデルに変換できます。
tableService.createRecord(with: fields, in: tableName, writeOptions: writeOptions, configuration: readConfiguration)
.subscribe(on: DispatchQueue.global())
.receive(on: DispatchQueue.main)
.convertToRecord()
.sink { completion in
if case let .failure(error) = completion {
print("Record creation failed with NowDataError: \(error)")
}
} receiveValue: { record in
print("Created NowRecord: \(record)")
}
.store(in: &subscriptions)
NowTableService - delete(_ model: Model, fromテーブルName: 文字列) 非同期スロー
指定されたコード化可能モデルを指定されたテーブルから削除します。
| 名前 | タイプ | 説明 |
|---|---|---|
| モデル | モデル | テーブルから削除する SysIdentifitableModel。削除するレコードのsys_idが含まれている必要があります。 |
| テーブル名から | 文字列 | インシデントなどの情報を削除するテーブルの名前。 |
| タイプ | 説明 |
|---|---|
| なし | メソッドが成功したときに何も返されません。 |
| NowDataError | メソッドが失敗したときにスローされます。
|
次のコード例は、このメソッドを呼び出す方法を示しています。
do {
try await tableService.delete(model, from: tableName)
print("Deletion successful.")
} catch {
print("Deletion failed with NowDataError: \(error)")
}
NowTableService - delete(_ model: Model, fromテーブルName: 文字列, completion: @escaping (Result<Void, NowDataError>))
指定されたテーブルから指定された Codable モデルを削除し、適切な completion ハンドラーを実行します。
| 名前 | タイプ | 説明 |
|---|---|---|
| モデル | モデル | テーブルから削除する SysIdentifitableModel。削除するレコードのsys_idが含まれている必要があります。 |
| テーブル名から | 文字列 | インシデントなどの情報を削除するテーブルの名前。 |
| 完了 | @escaping (result<void, nowDataError>) | 指定されたコード化可能モデルを削除した後に実行する完了ハンドラー。 戻り値:
|
| タイプ | 説明 |
|---|---|
| なし |
次のコード例は、この関数を呼び出す方法を示しています。
tableService.delete(Incident(sysId: sysId), from: tableName) { [weak self] result in
switch result {
case .success:
// Delete successfully
case .failure(let error):
// Failed to delete with NowDataError
}
}
NowTableService - delete(_ model: Model, fromテーブルName: 文字列)
指定されたコード化可能モデルを指定されたテーブルから削除します。
| 名前 | タイプ | 説明 |
|---|---|---|
| モデル | モデル | テーブルから削除する SysIdentifitableModel。削除するレコードのsys_idが含まれている必要があります。 |
| テーブル名から | 文字列 | インシデントなどの情報を削除するテーブルの名前。 |
| タイプ | 説明 |
|---|---|
| AnyPublisher<Void, NowDataError> | 成功:何も返されませんでした エラー:NowDataError
|
次のコード例は、この関数を呼び出す方法を示しています。
tableService.delete(Incident(sysId: sysId), from: tableName)
.subscribe(on: DispatchQueue.global())
.receive(on: DispatchQueue.main)
.sink { [weak self] completion in
switch completion {
case .finished:
// Delete successfully
case .failure(let error):
// Failed to delete with NowDataError
}
} receiveValue: { _ in
}
.store(in: &subscriptions)
NowTableService - deleteRecord(sysId: SysID, fromテーブルName: 文字列) 非同期スロー
指定されたテーブルから指定されたレコードを削除します。
| 名前 | タイプ | 説明 |
|---|---|---|
| sysId | 文字列 | 削除するレコードの sys_id。 |
| テーブル名から | 文字列 | インシデントなどの情報を削除するテーブルの名前。 |
| タイプ | 説明 |
|---|---|
| なし | メソッドが成功したときに何も返されません。 |
| NowDataError | メソッドが失敗したときにスローされます。
|
次のコード例は、このメソッドを呼び出す方法を示しています。
do {
try await tableService.deleteRecord(sysId: sysId, from: tableName)
print("Deletion successful.")
} catch {
print("Deletion failed with NowDataError: \(error)")
}
NowTableService - deleteRecord(sysId: SysID, from tableName: String, completion: @escaping (Result<Void, NowDataError>))
指定されたテーブルから指定されたレコードを削除し、レコードが削除された後にオブジェクトを実行します completion 。
| 名前 | タイプ | 説明 |
|---|---|---|
| sysId | 文字列 | 削除するレコードの sys_id。 |
| テーブル名から | 文字列 | インシデントなどの情報を削除するテーブルの名前。 |
| 完了 | @escaping (result<void, nowDataError>) | 成功:何も返されません。 エラー:NowDataError
|
| タイプ | 説明 |
|---|---|
| なし |
次のコード例は、この関数を呼び出す方法を示しています。
tableService.deleteRecord(sysId: sysId, from: tableName) { [weak self] result in
switch result {
case .success:
// Delete successfully
case .failure(let error):
// Failed to delete with NowDataError
}
}
NowTableService - deleteRecord(sysId: SysID, fromテーブルName: 文字列)
指定されたテーブルから指定されたレコードを削除します。
| 名前 | タイプ | 説明 |
|---|---|---|
| sysId | 文字列 | 削除するレコードの sys_id。 |
| テーブル名から | 文字列 | インシデントなどの情報を削除するテーブルの名前。 |
| タイプ | 説明 |
|---|---|
| AnyPublisher<Void, NowDataError> | 成功:何も返されませんでした エラー:NowDataError
|
この例は、指定されたテーブルのレコードを削除する関数を作成する方法を示しています。
tableService.deleteRecord(sysId: sysId, from: tableName)
.subscribe(on: DispatchQueue.global())
.receive(on: DispatchQueue.main)
.sink { completion in
switch completion {
case .finished:
print("Record deleted.")
case .failure(let error):
print("Deletion failed with NowDataError: \(error)")
}
} receiveValue: { _ in }
.store(in: &subscriptions)
NowServiceTable - init(configuration: NowServiceConfiguration, coreServiceProvider: NowCoreServiceProviding? = nil)
NowTableService オブジェクトを作成します。
| 名前 | タイプ | 説明 |
|---|---|---|
| 構成 | NowServiceConfiguration | サービスの作成時に使用する設定パラメーター。 |
| coreServiceProvider | ナウコアサービス提供 | オプション。NowTableService に関連付けるサービスプロバイダー。 デフォルト:nil |
次のコード例は、この関数を呼び出す方法を示しています。
guard let coreService = NowSDK.core() else {
// Error with NowServiceError.sdkNotConfigured
return
}
guard
let instanceUrl = URL(string: "http://sample.service-now.com") ,
let serviceConfig = NowSDK.makeServiceConfiguration(for: instanceUrl) else {
// Could not create service –
// NowServiceError.serviceConfigurationInvalid
return
}
let tableService = NowTableService (configuration: serviceConfig, coreServiceProvider: coreService)
NowTableService - model<Model: デコード可能>(sysId: SysID? = nil, fromテーブルName: String, path: String = Constants.resultPath, coder: Coder = .default, configuration: FetchConfiguration? = nil) 非同期スロー
指定したテーブルからのデコード可能なモデルの取得を有効にします。
{
"result": [
{ "name": "Ash Williams" },
{ "name": "Lionel Cosgrove" },
{ "name": "Laurie Strode" }
]
}結果セットが大きい場合は、いずれかのページネーション関数を使用するか、 NowTableService - paginator(from tableName: String, configuration: FetchConfiguration? = nil)NowTableService - paginator<Model: Decodable>(from tableName: String, path: String = Constants.resultPath, coder: Coder = .default, configuration: FetchConfiguration? = nil) ページネーションされたモデルをフェッチします。| 名前 | タイプ | 説明 |
|---|---|---|
| sysId を含む | SysID | オプション。返されるレコードの sys_id。特定のレコードを取得する場合は、sys_idを指定します。 デフォルト:nil |
| テーブル名から | 文字列 | インシデントなどのレコードの取得元のテーブルの名前。 |
| path | 文字列 | 入れ子になった型のドット区切りパス。たとえば、 result または foo.bar.baz を指定すると、より詳細なネストができます。デフォルト: |
| コーダー | コーダー | オプション。インスタンスとの間でServiceNow送受信されるデータのエンコードまたはデコードに使用するコーダー。可能な値:
デフォルト:.default |
| 構成 | フェッチ構成 | オプション。返されるレコードを定義するフィルター、ページネーションページサイズ制限、取得するフィールド、フィールドに含める内容など、取得されたレコードに適用する構成。 デフォルト:nil - すべてのレコードが返されます。 |
| タイプ | 説明 |
|---|---|
| モデル | メソッドが成功した場合に返されます。デコード可能なモデル。 |
| NowDataError | メソッドが失敗したときにスローされます。
|
次のコード例は、このメソッドを呼び出す方法を示しています。
struct User: Codable {
var name: String
}
let service: NowTableService = ...
do {
let result = try await service.model([User].self, from: "sys_user", path: "result")
print("Fetched \(users.count) users")
} catch {
dump(error)
}
次のコード例は、単一のデコード可能モデルを sys_id でフェッチする方法を示しています。単一のモデルタイプ ([User].self ではなく、User.self など) を使用します。
let result = try await service.model(User.self, with: "5137153cc611227c000bbd1bd8cd2005", from: "sys_user", path: "result")
NowTableService - model<Model: デコード可能>(_ type: Model.Type, with sysId: SysID? = nil, from tableName: String, path: String = Constants.resultPath, coder: Coder = .default, configuration: FetchConfiguration? = nil, completion: @escaping (Result<Model, NowDataError>))
指定されたテーブルからデコード可能なモデルを取得します。
{
"result": [
{ "name": "Ash Williams" },
{ "name": "Lionel Cosgrove" },
{ "name": "Laurie Strode" }
]
}この関数を使用して、ネストされた出力の代わりにデコード可能なモデルを取得します。
| 名前 | タイプ | 説明 |
|---|---|---|
| タイプ | Model.Type | デコードする値のタイプ。 |
| sysId を含む | 文字列 | オプション。返されるレコードの sys_id。 デフォルト:設定ごとに configuration 返されるすべてのレコード。 |
| テーブル名から | 文字列 | インシデントなどのレコードの取得元のテーブルの名前。 |
| path | 文字列 | オプション。入れ子になった型のドット区切りパス。たとえば、 result または foo.bar.baz を指定すると、より詳細なネストができます。デフォルト: |
| コーダー | コーダー | オプション。インスタンスとの間でServiceNow送受信されるデータのエンコードまたはデコードに使用するコーダー。デフォルト: |
| 構成 | フェッチ構成 | オプション。返されるレコードを定義するフィルター、ページネーションページサイズ制限、取得するフィールド、フィールドに含める内容など、取得されたレコードに適用する構成。 デフォルト:nil - すべてのレコードが返されます。 |
| 完了 | @escaping (result<model, nowDataError>) | 指定されたデコード可能モデルを取得した後に実行する完了ハンドラー。 完了ハンドラーの値を返します。
|
| タイプ | 説明 |
|---|---|
| なし |
デコード User されたモデルのコレクションを取得します。
struct User: SysIdentifiableModel {
var sysId: String = ""
var name: String
}
let service: NowTableService = ...
let user = User(name: "Ash Williams")
service.create(Incident(fields: fields), in: tableName, writeOptions: writeOptions, configuration: fetchConfiguration) { [weak self] result in
switch result {
case .success(let newUser):
/// 'newUser' contains the platform assigned 'sys_id', use in subsequent 'update' or 'delete' calls.
case .failure(let error):
...
}
}
sys_id 1 つのデコード可能モデルを取得するには、[User].self ではなく User.self などの単一のモデルタイプを使用します。
service.model(User.self, with: "5137153cc611227c000bbd1bd8cd2005", from: "sys_user", path: "result") { resultin ... }
NowTableService - model<Model: デコード可能>(sysId: SysID? = nil, fromテーブルName: String, path: String = Constants.resultPath, coder: Coder = .default, configuration: FetchConfiguration? = nil)
指定したテーブルからデコード可能なモデルを取得できるようにするパブリッシャーを作成します。
{
"result": [
{ "name": "Ash Williams" },
{ "name": "Lionel Cosgrove" },
{ "name": "Laurie Strode" }
]
}結果セットが大きい場合は、いずれかのページネーション関数を使用するか、 NowTableService - paginator(from tableName: String, configuration: FetchConfiguration? = nil)NowTableService - paginator<Model: Decodable>(from tableName: String, path: String = Constants.resultPath, coder: Coder = .default, configuration: FetchConfiguration? = nil) ページネーションされたモデルをフェッチします。| 名前 | タイプ | 説明 |
|---|---|---|
| sysId を含む | SysID | オプション。返されるレコードの sys_id。特定のレコードを取得する場合は、sys_idを指定します。 デフォルト:nil |
| テーブル名から | 文字列 | インシデントなどのレコードの取得元のテーブルの名前。 |
| path | 文字列 | 入れ子になった型のドット区切りパス。たとえば、 result または foo.bar.baz を指定すると、より詳細なネストができます。デフォルト: |
| コーダー | コーダー | オプション。インスタンスとの間でServiceNow送受信されるデータのエンコードまたはデコードに使用するコーダー。可能な値:
デフォルト:.default |
| 構成 | フェッチ構成 | オプション。返されるレコードを定義するフィルター、ページネーションページサイズ制限、取得するフィールド、フィールドに含める内容など、取得されたレコードに適用する構成。 デフォルト:nil - すべてのレコードが返されます。 |
| タイプ | 説明 |
|---|---|
| AnyPublisher<Model, NowDataError> | 成功:デコード可能なモデルを返却するパブリッシャー。 エラー:NowDataError
|
デコードされたユーザーモデルをタイプ別に提供する公開者 ( [Users].self など) を取得するには、ドット区切りパスを指定してモデルをフェッチします。
struct User: Codable {
varname: String
}
let service: NowTableService = ...
let publisher: AnyPublisher<[User], NowDataError> = service.model(from: "sys_user", path: "user.photos.gps_location")
sys_id 1 つのデコード可能モデルをフェッチするには、[User].self ではなく単一の User.self モデルタイプを使用します。
let publisher: AnyPublisher<User, NowDataError> = service.model(with: "5137153cc611227c000bbd1bd8cd2005", from: "sys_user", path: "result")
NowTableService - paginator(from tableName: String, configuration: FetchConfiguration? = nil)
レコードのページを反復処理できるようにするページネータを作成します。
let dataPublisher: AnyPublisher<Data, NowDataError> = ...
let recordsPublisher: AnyPublisher<[NowRecord], NowDataError> = myPublisher.convertToRecords()| 名前 | タイプ | 説明 |
|---|---|---|
| tableName | 文字列 | インシデントなどのレコードの取得元のテーブルの名前。 |
| 構成 | フェッチ構成 | オプション。返されるレコードを定義するフィルター、ページネーションページサイズ制限、取得するフィールド、フィールドに含める内容など、取得されたレコードに適用する構成。 デフォルト:nil - すべてのレコードが返されます。 |
| タイプ | 説明 |
|---|---|
| paginator<data> | 成功:指定されたレコードを含むページネータオブジェクト。 エラー:NowDataError
|
private var tableService: NowTableService?
// Paginator creation uses type inference to determine the response type.
private var paginator: Paginator<[CustomerServiceCase]>?
func initializeTableService(for instanceUrl: URL) {
makeTableService(instanceUrl: instanceUrl) { [weak self] result in
guard let self = self else { return }
switch result {
case .success(let tableService):
self.tableService = tableService
// Create a paginator that iterates over pages of customer support cases. The paginator's response type is
// inferred from the paginator's type definition (e.g. `Paginator<[CustomerServiceCase]>`).
self.paginator = tableService.paginator(from: Self.tableName, configuration: self.fetchConfiguration)
// Subscribe to the paginator's publisher so you are able to receive paged results.
self.subscribeToPaginatorPublisher()
// Ready to start fetching data, inform the view controller.
self.onReady(self)
case .failure(let error):
debugPrint("Creating table service failed with error: \(error.localizedDescription)")
self.tableService = nil
self.paginator = nil
}
}
}
NowTableService - paginator<Model: Decodable>(from tableName: String, path: String = Constants.resultPath, coder: Coder = .default, configuration: FetchConfiguration? = nil)
入れ子を処理するデコードされたモデルのページの反復を有効にするページネータを作成します。
{
"result": [
{ "name": "Ash Williams" },
{ "name": "Lionel Cosgrove" },
{ "name": "Laurie Strode" }
]
}struct User: Codable {
varname: String
}
let service: NowTableService = ...
let paginator: Paginator<[User]> = service.paginator(from: "sys_user", path: "result")paginator.publisher
.subscribe(on: DispatchQueue.global())
.receive(on: DispatchQueue.main)
.sink { … }
.store(in: &subscriptions)| 名前 | タイプ | 説明 |
|---|---|---|
| テーブル名から | 文字列 | インシデントなどのレコードの取得元のテーブルの名前。 |
| path | 文字列 | 入れ子になった型のドット区切りパス。たとえば、 より 詳細なネストの場合は、result または result.user.photos を入力します。カスタムパスを指定すると、ネストされたデータのフェッチまたは反復処理が可能になります。デフォルト: |
| コーダー | コーダー | オプション。インスタンスとの間でServiceNow送受信されるデータのエンコードまたはデコードに使用するコーダー。可能な値:
デフォルト:.default |
| 構成 | フェッチ構成 | オプション。返されるレコードを定義するフィルター、ページネーションページサイズ制限、取得するフィールド、フィールドに含める内容など、取得されたレコードに適用する構成。 デフォルト:nil - すべてのレコードが返されます。 |
| タイプ | 説明 |
|---|---|
| paginator<data> | 成功: ページングされた デコード可能な モデルを含むページネータオブジェクト。エラー:NowDataError
|
この例では、デコードされた User モデルを提供する Pagene オブジェクトを取得する方法を示します。目的の Paginator オブジェクトをフェッチするには、コンパイラに User モデル ([User]) のコレクションを返すように指示し、ユーザーが結果パスの下にネストされていることを Paginator オブジェクトに通知します。
struct User: Codable {
var name: String
}
let service: NowTableService = ...
let paginator: Paginator<[User]> = service.paginator(from: "sys_user", path: "result")
NowTableService - record(sysId: SysID, from tableName: String, configuration: FieldReadConfiguration? = nil) async throws
インスタンスの ServiceNow 指定されたテーブルから指定されたレコードを取得します。
let dataPublisher: AnyPublisher<Data, NowDataError> = ...
let recordsPublisher: AnyPublisher<[NowRecord], NowDataError> = myPublisher.convertToRecords()| 名前 | タイプ | 説明 |
|---|---|---|
| sysId | 文字列 | インスタンスから ServiceNow 返すレコードのSys_id。 |
| テーブル名から | 文字列 | インシデントなどのレコードの取得元のテーブルの名前。 |
| 構成 | フェッチ構成 | オプション。返されるレコードを定義するフィルター、ページネーションページサイズ制限、取得するフィールド、フィールドに含める内容など、取得されたレコードに適用する構成。 デフォルト:nil - すべてのレコードが返されます。 |
| タイプ | 説明 |
|---|---|
| データ | メソッドが成功した場合に返されます。指定されたレコードを含むデータオブジェクト。 |
| NowDataError | メソッドが失敗したときにスローされます。
|
次のコード例は、このメソッドを呼び出す方法を示しています。
func fetchTableRecord(sysId: String, tableName: String, includeFields: [FieldName] = [FieldName](), readOptions: FieldReadConfiguration.Options = []) async throws -> NowRecord {
let readConfig = FieldReadConfiguration(includeFields: includeFields, options: readOptions)
do {
let dataResult: Data = try await tableService.record(with: sysId, from: tableName, configuration: configuration)
let recordResult: NowRecord = dataResult.convertToRecord()
return recordResult
} catch {
print("Fetch failed with NowDataError: \(error)")
throw error
}
}
NowTableService - record(with sysId: SysID, from tableName: String, configuration: FieldReadConfiguration, completion: @escaping (Result<Data, NowDataError>)
指定されたテーブルから指定されたレコードを取得し、レコードが取得された後に完了ハンドラーを実行します。
let dataPublisher: AnyPublisher<Data, NowDataError> = ...
let recordsPublisher: AnyPublisher<[NowRecord], NowDataError> = myResult.convertToRecords() 結果セットが大きい場合は、関数を使用して NowTableService - paginator(from tableName: String, configuration: FetchConfiguration? = nil) ページネーションされた結果をフェッチします。| 名前 | タイプ | 説明 |
|---|---|---|
| sysId | 文字列 | インスタンスから ServiceNow 返すレコードのSys_id。 |
| テーブル名から | 文字列 | インシデントなどのレコードの取得元のテーブルの名前。 |
| 構成 | フェッチ構成 | オプション。返されるレコードを定義するフィルター、ページネーションページサイズ制限、取得するフィールド、フィールドに含める内容など、取得されたレコードに適用する構成。 デフォルト:nil - すべてのレコードが返されます。 |
| 完了 | @escaping (result<data, nowDataError>) | レコードが取得された後に実行する完了ハンドラー。 戻り値:
|
| タイプ | 説明 |
|---|---|
| なし |
次のコード例は、このメソッドを呼び出す方法を示しています。
func fetchTableRecords( tableName: String, filterQuery: String, includeFields: [FieldName] = [FieldName](), readOptions: FieldReadConfiguration.Options = [], limit: Int?) {
let readConfig = FieldReadConfiguration(includeFields: includeFields, options: readOptions)
let config = FetchConfiguration(Filter(query: filterQuery), limit, readConfig)
tableService.records (from: tableName, configuration: fetchConfiguration) { [weak self] result in
switch result {
case .success(let dataResult):
let recordResult: [NowRecord] = dataResult.convertToRecords()
// Return recordResult
case .failure(let error):
// Failed to fetch record with NowDataError
}
}
}
NowTableService - record(sysId: SysID, fromテーブルName: 文字列, configuration: FieldReadConfiguration? = nil)
インスタンスの指定されたテーブルから指定されたレコードを取得するパブリッシャーを作成します ServiceNow 。
let dataPublisher: AnyPublisher<Data, NowDataError> = ...
let recordsPublisher: AnyPublisher<[NowRecord], NowDataError> = myPublisher.convertToRecords()| 名前 | タイプ | 説明 |
|---|---|---|
| sysId | 文字列 | インスタンスから ServiceNow 返すレコードのSys_id。 |
| テーブル名から | 文字列 | インシデントなどのレコードの取得元のテーブルの名前。 |
| 構成 | フェッチ構成 | オプション。返されるレコードを定義するフィルター、ページネーションページサイズ制限、取得するフィールド、フィールドに含める内容など、取得されたレコードに適用する構成。 デフォルト:nil - すべてのレコードが返されます。 |
| タイプ | 説明 |
|---|---|
| AnyPublisher<Data, NowDataError> | 成功:指定されたレコードを含むデータオブジェクト。 エラー:NowDataError
|
この例は、指定されたフィールドを使用して、指定されたテーブルから指定されたレコードを取得する関数を作成する方法を示しています。呼び出しの出力は ByteArray で、データを任意のモデルに変換できます。
tableService.record(with: sysId, from: tableName, configuration: fetchConfiguration)
.subscribe(on: DispatchQueue.global())
.receive(on: DispatchQueue.main)
.convertToRecord()
.sink { completion in
if case let .failure(error) = completion {
print("Record retrieval failed with NowDataError: \(error)")
}
} receiveValue: { record in
print("Successfully retrieved record: \(record)")
}
.store(in: &subscriptions)
NowTableService - records(from tableName: 文字列, configuration: FetchConfiguration? = nil) 非同期スロー
指定されたテーブルからレコードを取得します。
let dataPublisher: AnyPublisher<Data, NowDataError> = ...
let recordsPublisher: AnyPublisher<[NowRecord], NowDataError> = myPublisher.convertToRecords() 結果セットが大きい場合は、関数を使用して NowTableService - paginator(from tableName: String, configuration: FetchConfiguration? = nil) ページネーションされた結果をフェッチします。| 名前 | タイプ | 説明 |
|---|---|---|
| テーブル名から | 文字列 | インシデントなどのレコードの取得元のテーブルの名前。 |
| 構成 | フェッチ構成 | オプション。返されるレコードを定義するフィルター、ページネーションページサイズ制限、取得するフィールド、フィールドに含める内容など、取得されたレコードに適用する構成。 デフォルト:nil - すべてのレコードが返されます。 |
| タイプ | 説明 |
|---|---|
| データ | メソッドが成功した場合に返されます。指定されたレコードを含むデータオブジェクト。 |
| NowDataError | メソッドが失敗したときにスローされます。
|
次のコード例は、このメソッドを呼び出す方法を示しています。
func fetchTableRecords( tableName: String, filterQuery: String,
includeFields: [FieldName] = [FieldName](), readOptions:
FieldReadConfiguration.Options = [], limit: Int?) {
let readConfig = FieldReadConfiguration(includeFields: includeFields, options: readOptions)
let config = FetchConfiguration(Filter(query: filterQuery), limit, readConfig)
do {
let dataResult: Data = try await tableService.records(from: tableName, configuration: config)
let recordResult: [NowRecord] = dataResult.convertToRecords()
// return recordResult
} catch {
print("Fetch failed with NowDataError: \(error)")
throw error
}
}
NowTableService - records(from tableName: String, configuration: FetchConfiguration? = nil, completion: @escaping (Result<Data, NowDataError>))
指定されたテーブルからレコードを取得し、レコードが取得された後にハンドラーを実行します completion 。
let dataPublisher: AnyPublisher<Data, NowDataError> = ...
let recordsPublisher: AnyPublisher<[NowRecord], NowDataError> = myResult.convertToRecords() 結果セットが大きい場合は、関数を使用して NowTableService - paginator(from tableName: String, configuration: FetchConfiguration? = nil) ページネーションされた結果をフェッチします。| 名前 | タイプ | 説明 |
|---|---|---|
| テーブル名の内 | 文字列 | レコードを書き込むテーブルの名前 ( インシデントなど)。 |
| 構成 | フェッチ構成 | オプション。返されるレコードを定義するフィルター、ページネーションページサイズ制限、取得するフィールド、フィールドに含める内容など、取得されたレコードに適用する構成。 デフォルト:nil - すべてのレコードが返されます。 |
| 完了 | @escaping (result<data, nowDataError>) | レコードが取得された後に実行する完了ハンドラー。 戻り値:
|
| タイプ | 説明 |
|---|---|
| なし |
次のコード例は、このメソッドを呼び出す方法を示しています。
func fetchTableRecords( tableName: String, filterQuery: String, includeFields: [FieldName] = [FieldName](), readOptions: FieldReadConfiguration.Options = [], limit: Int?) {
let readConfig = FieldReadConfiguration(includeFields: includeFields, options: readOptions)
let config = FetchConfiguration(Filter(query: filterQuery), limit, readConfig)
tableService.records (from: tableName, configuration: fetchConfiguration) { [weak self] result in
switch result {
case .success(let dataResult):
let recordResult: [NowRecord] = dataResult.convertToRecords()
// return recordResult
case .failure(let error):
// Failed to fetch record with NowDataError
}
}
}
NowTableService - records(from tableName: String, configuration: FetchConfiguration? = nil)
指定したテーブルからレコードを取得できるようにするパブリッシャーを作成します。
let dataPublisher: AnyPublisher<Data, NowDataError> = ...
let recordsPublisher: AnyPublisher<[NowRecord], NowDataError> = myPublisher.convertToRecords() 結果セットが大きい場合は、関数を使用して NowTableService - paginator(from tableName: String, configuration: FetchConfiguration? = nil) ページネーションされた結果をフェッチします。| 名前 | タイプ | 説明 |
|---|---|---|
| テーブル名から | 文字列 | インシデントなどのレコードの取得元のテーブルの名前。 |
| 構成 | フェッチ構成 | オプション。返されるレコードを定義するフィルター、ページネーションページサイズ制限、取得するフィールド、フィールドに含める内容など、取得されたレコードに適用する構成。 デフォルト:nil - すべてのレコードが返されます。 |
| タイプ | 説明 |
|---|---|
| AnyPublisher<Data, NowDataError> | 成功:指定されたレコードを含むデータオブジェクト。 エラー:NowDataError
|
この例は、指定されたテーブルから複数のレコードをフェッチする関数を作成する方法を示しています。将来のある時点で実行されるように要求をスケジュールし、ByteArray 応答を返すオブジェクトを作成します。
tableService.records(from: tableName, configuration: fetchConfiguration)
.subscribe(on: DispatchQueue.global())
.receive(on: DispatchQueue.main)
.convertToRecords()
.sink { completion in
if case let .failure(error) = completion {
print("Record retrieval failed with NowDataError: \(error)")
}
} receiveValue: { records in
print("Successfully retrieved records: \(records)")
}
.store(in: &subscriptions)
NowTableService - update<Model: SysIdentifiableModel>(_ model: Model, in tableName: String, coder: Coder = .default, writeOptions: FieldWriteOptions? = nil, configuration: FetchConfiguration? = nil) 非同期スロー
指定されたテーブル内の指定されたコード化可能モデルを更新します。
| 名前 | タイプ | 説明 |
|---|---|---|
| モデル | モデル | テーブルで更新する SysIdentififiableModel モデル。 |
| テーブル名の内 | 文字列 | レコードを書き込むテーブルの名前 ( インシデントなど)。 |
| コーダー | コーダー | オプション。インスタンスとの間でServiceNow送受信されるデータのエンコードまたはデコードに使用するコーダー。可能な値:
デフォルト:.default |
| 書き込みオプション | フィールド書き込みオプション | オプション。レコードに書き込まれるデータに適用する構成オプション。 デフォルト:nil |
| 構成 | フェッチ構成 | オプション。返されるレコードを定義するフィルター、ページネーションページサイズ制限、取得するフィールド、フィールドに含める内容など、取得されたレコードに適用する構成。 デフォルト:nil - すべてのレコードが返されます。 |
| タイプ | 説明 |
|---|---|
| モデル | メソッドが成功した場合に返されます。指定されたテーブルで更新されたデコード可能なモデル。 |
| NowDataError | メソッドが失敗したときにスローされます。
|
次のコード例は、このメソッドを呼び出す方法を示しています。
struct User: SysIdentifiableModel {
var sysId: String = ""
var name: String}
func updateUser(user: User) async throws -> User {
do {
let result = try await tableService.update(user, in: “sys_user”)
return result
} catch {
print("Update failed with NowDataError: \(error)")
throw error
}
}
NowTableService - update<Model: SysIdentifiableModel>(_ model: Model, in tableName: String, coder: Coder = .default, writeOptions: FieldWriteOptions? = nil, configuration: FetchConfiguration? = nil, completion: @escaping (Result<Model, NowDataError>))
指定されたテーブル内の指定されたコード化可能モデルを更新し、 completion ハンドラーを実行します。
| 名前 | タイプ | 説明 |
|---|---|---|
| モデル | モデル | テーブルで更新する SysIdentififiableModel モデル。 |
| テーブル名の内 | 文字列 | レコードを書き込むテーブルの名前 ( インシデントなど)。 |
| コーダー | コーダー | オプション。インスタンスとの間でServiceNow送受信されるデータのエンコードまたはデコードに使用するコーダー。可能な値:
デフォルト:.default |
| 書き込みオプション | フィールド書き込みオプション | オプション。レコードに書き込まれるデータに適用する構成オプション。 デフォルト:nil |
| 構成 | フェッチ構成 | オプション。返されるレコードを定義するフィルター、ページネーションページサイズ制限、取得するフィールド、フィールドに含める内容など、取得されたレコードに適用する構成。 デフォルト:nil - すべてのレコードが返されます。 |
| 完了 | @escaping (result<model, nowDataError>) | 指定されたコード化可能モデルを更新した後に実行する完了ハンドラー。 戻り値:
|
| タイプ | 説明 |
|---|---|
| なし |
次のコード例は、このメソッドを呼び出す方法を示しています。
struct User: SysIdentifiableModel {
var sysId: String = ""
var name: String
}
let user = User(sysId: "12345", name: "abel")
let coder: Coder = .default
tableService.update(user, in: "sys_user") { [weak self] result in
switch result {
case .success(let model):
do {
let data = try coder.jsonEncoder.encode(model)
self?.publish(data: data)
} catch {
self?.publish(result: .failure(error))
}
case .failure(let error):
// Failed to update with NowDataError
self?.publish(result: .failure(error))
}
}
NowTableService - update<Model: SysIdentifiableModel>(_ model: Model, in tableName: String, coder: Coder = .default, writeOptions: FieldWriteOptions? = nil, configuration: FetchConfiguration? = nil)
指定されたテーブル内の指定されたコード化可能モデルを更新します。
| 名前 | タイプ | 説明 |
|---|---|---|
| モデル | モデル | テーブルで更新する SysIdentififiableModel モデル。 |
| テーブル名の内 | 文字列 | レコードを書き込むテーブルの名前 ( インシデントなど)。 |
| コーダー | コーダー | オプション。インスタンスとの間でServiceNow送受信されるデータのエンコードまたはデコードに使用するコーダー。可能な値:
デフォルト:.default |
| 書き込みオプション | フィールド書き込みオプション | オプション。レコードに書き込まれるデータに適用する構成オプション。 デフォルト:nil |
| 構成 | フェッチ構成 | オプション。返されるレコードを定義するフィルター、ページネーションページサイズ制限、取得するフィールド、フィールドに含める内容など、取得されたレコードに適用する構成。 デフォルト:nil - すべてのレコードが返されます。 |
| タイプ | 説明 |
|---|---|
| AnyPublisher<Model, NowDataError> | 成功:指定されたテーブルで更新されたデコード可能なモデル。 エラー:NowDataError
|
次のコード例は、このメソッドを呼び出す方法を示しています。
struct User: SysIdentifiableModel {
var sysId: String = ""
var name: String
}
let user = User(sysId: "12345", name: "abel")
let coder: Coder = .default
tableService.update(user, in: "sys_user")
.subscribe(on: DispatchQueue.global())
.receive(on: DispatchQueue.main)
.sink { [weak self] completion in
if case let .failure(error) = completion {
// Failed to update with NowDataError
self?.publish(result: .failure(error))
}
} receiveValue: { [weak self] updatedModel in
do {
let data = try coder.jsonEncoder.encode(updatedModel)
self?.publish(data: data)
} catch {
// Failed to update with NowDataError
self?.publish(result: .failure(error))
}
}
.store(in: &subscriptions)
NowTableService - updateRecord(sysId: SysID, in tableName: String, withfields: [FieldName: FieldValue], writeOptions: FieldWriteOptions? = nil, configuration: FieldReadConfiguration? = nil) 非同期スロー
指定されたレコードを指定されたフィールドで更新します。
let dataPublisher: AnyPublisher<Data, NowDataError> = ...
let recordsPublisher: AnyPublisher<[NowRecord], NowDataError> = myPublisher.convertToRecords()プリフィックス sys_ を持つフィールドは、通常、自動的に生成されるシステムパラメーターであり、更新することはできません。指定されておらず、システムによって自動生成されないフィールドは、関連付けられたデータタイプの null 値に設定されます。| 名前 | タイプ | 説明 |
|---|---|---|
| sysId | 文字列 | インスタンスから ServiceNow 返すレコードのSys_id。 |
| フィールドあり | [フィールド名: フィールド値] | レコードに含めるフィールドの名前と値のペア。 |
| テーブル名の内 | 文字列 | レコードを書き込むテーブルの名前 ( インシデントなど)。 |
| 書き込みオプション | フィールド書き込みオプション | オプション。レコードに書き込まれるデータに適用する構成オプション。 デフォルト:nil |
| 構成 | フェッチ構成 | オプション。返されるレコードを定義するフィルター、ページネーションページサイズ制限、取得するフィールド、フィールドに含める内容など、取得されたレコードに適用する構成。 デフォルト:nil - すべてのレコードが返されます。 |
| タイプ | 説明 |
|---|---|
| データ | メソッドが成功した場合に返されます。更新されたレコードを含むデータオブジェクト。 |
| NowDataError | メソッドが失敗したときにスローされます。
|
次のコード例は、このメソッドを呼び出す方法を示しています。
do {
let dataResult: Data = try await tableService.updateRecord(with: fields, in: tableName, writeOptions: writeOptions, configuration: configuration)
let recordResult: NowRecord = dataResult.convertToRecord()
} catch {
print("Record update failed with NowDataError: \(error)")
}
NowTableService - updateRecord(sysId: SysID, in tableName: String, with fields: [FieldName: FieldValue], writeOptions: FieldWriteOptions? = nil, configuration: FieldReadConfiguration? = nil, completion: @escaping (Result<Data, NowDataError>)
指定されたレコードを指定されたフィールドで更新し、 completion レコードが保存されるとハンドラーを実行します。
let dataPublisher: AnyPublisher<Data, NowDataError> = ...
let recordsPublisher: AnyPublisher<[NowRecord], NowDataError> = myResult.convertToRecords()プリフィックス sys_ を持つフィールドは、通常、自動的に生成されるシステムパラメーターであり、更新することはできません。指定されておらず、システムによって自動生成されないフィールドは、関連付けられたデータタイプの null 値に設定されます。| 名前 | タイプ | 説明 |
|---|---|---|
| sysId | 文字列 | インスタンスから ServiceNow 返すレコードのSys_id。 |
| フィールドあり | [フィールド名: フィールド値] | レコードに含めるフィールドの名前と値のペア。 |
| テーブル名の内 | 文字列 | レコードを書き込むテーブルの名前 ( インシデントなど)。 |
| 書き込みオプション | フィールド書き込みオプション | オプション。レコードに書き込まれるデータに適用する構成オプション。 デフォルト:nil |
| 構成 | フェッチ構成 | オプション。返されるレコードを定義するフィルター、ページネーションページサイズ制限、取得するフィールド、フィールドに含める内容など、取得されたレコードに適用する構成。 デフォルト:nil - すべてのレコードが返されます。 |
| 完了 | @escaping (result<data, nowDataError>) | レコードが取得された後に実行する完了ハンドラー。 戻り値:
|
| タイプ | 説明 |
|---|---|
| なし |
次のコード例は、このメソッドを呼び出す方法を示しています。
tableService.updateRecord(sysId: sysId, in: tableName, with: fields, writeOptions: writeOptions, configuration: readConfiguration) { [weak self] result in
switch result {
case .success(let data):
self?.publish(data: data)
case .failure(let error):
// Failed to update with NowDataError
}
}
NowTableService - updateRecord(sysId: SysID, in tableName: String, withfields: [FieldName: FieldValue], writeOptions: FieldWriteOptions? = nil, configuration: FieldReadConfiguration? = nil)
指定されたレコードを指定されたフィールドで更新します。
let dataPublisher: AnyPublisher<Data, NowDataError> = ...
let recordsPublisher: AnyPublisher<[NowRecord], NowDataError> = myPublisher.convertToRecords()プリフィックス sys_ を持つフィールドは、通常、自動的に生成されるシステムパラメーターであり、更新することはできません。指定されておらず、システムによって自動生成されないフィールドは、関連付けられたデータタイプの null 値に設定されます。| 名前 | タイプ | 説明 |
|---|---|---|
| sysId | 文字列 | インスタンスから ServiceNow 返すレコードのSys_id。 |
| フィールドあり | [フィールド名: フィールド値] | レコードに含めるフィールドの名前と値のペア。 |
| テーブル名の内 | 文字列 | レコードを書き込むテーブルの名前 ( インシデントなど)。 |
| 書き込みオプション | フィールド書き込みオプション | オプション。レコードに書き込まれるデータに適用する構成オプション。 デフォルト:nil |
| 構成 | フェッチ構成 | オプション。返されるレコードを定義するフィルター、ページネーションページサイズ制限、取得するフィールド、フィールドに含める内容など、取得されたレコードに適用する構成。 デフォルト:nil - すべてのレコードが返されます。 |
| タイプ | 説明 |
|---|---|
| AnyPublisher<Data, NowDataError> | 成功:更新されたレコードを含むデータオブジェクト。 エラー:NowDataError
|
この例では、指定されたテーブル内のレコードを指定されたフィールドで更新する関数を作成する方法を示します。呼び出しの出力は ByteArray で、データを任意のモデルに変換できます。
tableService.updateRecord(sysId: sysId, in: tableName, with: fields, writeOptions: writeOptions, configuration: readConfiguration)
.subscribe(on: DispatchQueue.global())
.receive(on: DispatchQueue.main)
.convertToRecord()
.sink { completion in
if case let .failure(error) = completion {
print("Update failed with NowDataError: \(error)")
}
} receiveValue: { record in
print("Record updated: \(record)")
}
.store(in: &subscriptions)