NowTableService 클래스 - iOS
NowTableService 클래스는 기존 ServiceNow 테이블의 레코드에 대해 만들기, 읽기, 업데이트 및 삭제 작업을 수행할 수 있는 함수를 제공합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 구성 | NowService구성 | 서비스를 초기화할 때 제공된 구성 설정입니다. |
NowTableService - create<Model: SysIdentifiableModel>(_ model: Model, in tableName: String, coder: Coder, writeOptions: FieldWriteOptions, configuration: FetchConfiguration) 비동기 throws
지정된 Codable 모델을 지정된 테이블에 삽입합니다.
모델별로 새 기록을 생성하려면 모델이 SysIdentifiableModel 프로토콜을 준수해야 합니다. 일반적으로 각 테이블에는 자체 모델이 있습니다.
모델의 sys_Id 매개변수는 플랫폼에서 생성 ServiceNow 되므로 생성하는 sysId 동안 무시됩니다. 생성된 플랫폼은 처리기의 Result 모델에 반환됩니다completion.sys_IdServiceNow
| 이름 | 유형 | 설명 |
|---|---|---|
| 모델 | SysIdentifiableModel | 테이블에 삽입할 필드의 모델 정의입니다. |
| tableName의 | 문자열 | 인시던트 등의 기록을 작성할 테이블의 이름입니다. |
| 코더 | 코더 | 옵션입니다. 인스턴스와 주고 받는 데이터를 인코딩하거나 디코딩하는 데 사용할 코더입니다ServiceNow.가능한 값:
기본값: .default |
| write옵션 | FieldWriteOptions | 옵션입니다. 기록에 기록되는 데이터에 적용할 구성 옵션입니다. 기본값: nil |
| 구성 | FetchConfiguration | 옵션입니다. 반환할 기록, 페이지 매김 페이지 크기 제한, 검색할 필드 및 필드에 포함할 항목을 정의하는 필터를 포함하여 검색된 기록에 적용할 구성입니다. 기본값: nil - 모든 기록이 반환됩니다. |
| 유형 | 설명 |
|---|---|
| 모델 | 메서드가 성공할 경우 반환됩니다. sys_Id 포함하여 지정된 테이블에 삽입된 코딩 가능 모델입니다. 이 sys_id 사용하여 향후 메서드 호출에서 이 기록을 참조합니다. |
| NowDataError | 메서드가 실패할 때 throw됩니다.
|
다음 코드 예제에서는 이 메서드를 호출하는 방법을 보여 줍니다.
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>))
지정된 코드 가능 모델을 지정된 테이블에 삽입한 다음 처리기를 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 매개변수는 플랫폼에서 생성 ServiceNow 되므로 생성하는 sysId 동안 무시됩니다. 생성된 플랫폼은 처리기의 Result 모델에 반환됩니다completion.sys_IdServiceNow
| 이름 | 유형 | 설명 |
|---|---|---|
| 모델 | SysIdentifiableModel | 테이블에 삽입할 필드의 모델 정의입니다. |
| tableName의 | 문자열 | 인시던트 등의 기록을 작성할 테이블의 이름입니다. |
| 코더 | 코더 | 옵션입니다. 인스턴스와 주고 받는 데이터를 인코딩하거나 디코딩하는 데 사용할 코더입니다ServiceNow.가능한 값:
기본값: .default |
| write옵션 | FieldWriteOptions | 옵션입니다. 기록에 기록되는 데이터에 적용할 구성 옵션입니다. 기본값: nil |
| 구성 | FetchConfiguration | 옵션입니다. 반환할 기록, 페이지 매김 페이지 크기 제한, 검색할 필드 및 필드에 포함할 항목을 정의하는 필터를 포함하여 검색된 기록에 적용할 구성입니다. 기본값: nil - 모든 기록이 반환됩니다. |
| 완료 | @escaping(결과<모델, 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)
하나의 코드 가능 모델을 지정된 테이블에 삽입합니다.
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 콜백 모델에 반환됩니다.| 이름 | 유형 | 설명 |
|---|---|---|
| 모델 | SysIdentifiableModel | 테이블에 삽입할 SysIdentifiableModel 모델입니다. |
| tableName의 | 문자열 | 인시던트 등의 기록을 작성할 테이블의 이름입니다. |
| path | 문자열 | 옵션입니다. 중첩 유형에 대해 점으로 구분된 경로입니다. 예를 들어, 더 깊은 중첩의 경우 result 또는 foo.bar.baz입니다.기본값: |
| 코더 | 코더 | 옵션입니다. 인스턴스와 주고 받는 데이터를 인코딩하거나 디코딩하는 데 사용할 코더입니다ServiceNow.가능한 값:
기본값: .default |
| write옵션 | FieldWriteOptions | 옵션입니다. 기록에 기록되는 데이터에 적용할 구성 옵션입니다. 기본값: nil |
| 구성 | FetchConfiguration | 옵션입니다. 반환할 기록, 페이지 매김 페이지 크기 제한, 검색할 필드 및 필드에 포함할 항목을 정의하는 필터를 포함하여 검색된 기록에 적용할 구성입니다. 기본값: nil - 모든 기록이 반환됩니다. |
| 유형 | 설명 |
|---|---|
| AnyPublisher<Model,NowDataError> | 성공: 를 포함하여 sys_Id지정된 테이블에 삽입된 코딩 가능한 모델입니다. 이 sys_id 사용하여 향후 메서드 호출에서 이 기록을 참조합니다. 실패: NowDataError @escaping(결과<모델, 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(with fields: [FieldName: FieldValue], in tableName: String, writeOptions: FieldWriteOptions? = nil, configuration: FieldReadConfiguration? = nil) async throws
지정된 필드가 포함된 지정된 테이블에 기록을 삽입합니다.
let dataPublisher: AnyPublisher<Data, NowDataError> = ...
let recordsPublisher: AnyPublisher<[NowRecord], NowDataError> = myPublisher.convertToRecords()sys_ 인 필드는 일반적으로 자동으로 생성되고 업데이트할 수 없는 시스템 매개변수입니다. 지정되지 않고 시스템에서 자동 생성되지 않는 필드는 연관된 데이터 유형의 null 값으로 설정됩니다.| 이름 | 유형 | 설명 |
|---|---|---|
| 필드 포함 | [필드 이름: 필드 값] | 기록에 포함할 필드의 이름-값 쌍입니다. |
| tableName의 | 문자열 | 인시던트 등의 기록을 작성할 테이블의 이름입니다. |
| write옵션 | FieldWriteOptions | 옵션입니다. 기록에 기록되는 데이터에 적용할 구성 옵션입니다. 기본값: nil |
| 구성 | FetchConfiguration | 옵션입니다. 반환할 기록, 페이지 매김 페이지 크기 제한, 검색할 필드 및 필드에 포함할 항목을 정의하는 필터를 포함하여 검색된 기록에 적용할 구성입니다. 기본값: nil - 모든 기록이 반환됩니다. |
| 유형 | 설명 |
|---|---|
| 데이터 | 메서드가 성공할 경우 반환됩니다. 새 기록을 포함하는 데이터 객체입니다. |
| NowDataError | 메서드가 실패할 때 throw됩니다.
|
다음 코드 예제에서는 이 메서드를 호출하는 방법을 보여 줍니다.
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 값으로 설정됩니다.| 이름 | 유형 | 설명 |
|---|---|---|
| 필드 포함 | [필드 이름: 필드 값] | 기록에 포함할 필드의 이름-값 쌍입니다. |
| tableName의 | 문자열 | 인시던트 등의 기록을 작성할 테이블의 이름입니다. |
| write옵션 | FieldWriteOptions | 옵션입니다. 기록에 기록되는 데이터에 적용할 구성 옵션입니다. 기본값: nil |
| 구성 | FieldReadConfiguration | 옵션입니다. 반환할 필드와 필드에 포함할 항목을 지정하는 구성 옵션입니다. 기본값: nil |
| 완료 | @escaping(결과<데이터, 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(with fields: [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 값으로 설정됩니다.| 이름 | 유형 | 설명 |
|---|---|---|
| 필드 포함 | [필드 이름: 필드 값] | 기록에 포함할 필드의 이름-값 쌍입니다. |
| tableName의 | 문자열 | 인시던트 등의 기록을 작성할 테이블의 이름입니다. |
| write옵션 | FieldWriteOptions | 옵션입니다. 기록에 기록되는 데이터에 적용할 구성 옵션입니다. 기본값: nil |
| 구성 | FetchConfiguration | 옵션입니다. 반환할 기록, 페이지 매김 페이지 크기 제한, 검색할 필드 및 필드에 포함할 항목을 정의하는 필터를 포함하여 검색된 기록에 적용할 구성입니다. 기본값: 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 tableName: String) async throws
지정된 테이블에서 지정된 코드 가능 모델을 삭제합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 모델 | 모델 | 테이블에서 삭제할 SysIdentifiableModel 입니다. 삭제할 기록의 sys_id 포함해야 합니다. |
| tableName에서 | 문자열 | 인시던트 등 정보를 삭제할 테이블의 이름입니다. |
| 유형 | 설명 |
|---|---|
| 없음 | 메서드가 성공하면 아무 것도 반환되지 않습니다. |
| NowDataError | 메서드가 실패할 때 throw됩니다.
|
다음 코드 예제에서는 이 메서드를 호출하는 방법을 보여 줍니다.
do {
try await tableService.delete(model, from: tableName)
print("Deletion successful.")
} catch {
print("Deletion failed with NowDataError: \(error)")
}
NowTableService - delete(_ model: Model, from tableName: String, completion: @escaping (Result<Void, NowDataError>))
지정된 테이블에서 지정된 코드 가능 모델을 삭제한 다음 적절한 completion 처리기를 실행합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 모델 | 모델 | 테이블에서 삭제할 SysIdentifiableModel 입니다. 삭제할 기록의 sys_id 포함해야 합니다. |
| tableName에서 | 문자열 | 인시던트 등 정보를 삭제할 테이블의 이름입니다. |
| 완료 | @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 tableName: String)
지정된 테이블에서 지정된 코드 가능 모델을 삭제합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 모델 | 모델 | 테이블에서 삭제할 SysIdentifiableModel 입니다. 삭제할 기록의 sys_id 포함해야 합니다. |
| tableName에서 | 문자열 | 인시던트 등 정보를 삭제할 테이블의 이름입니다. |
| 유형 | 설명 |
|---|---|
| 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 tableName: String) 비동기 throws
지정된 테이블에서 지정된 기록을 삭제합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| sysId | 문자열 | 삭제할 기록의 Sys_id입니다. |
| tableName에서 | 문자열 | 인시던트 등 정보를 삭제할 테이블의 이름입니다. |
| 유형 | 설명 |
|---|---|
| 없음 | 메서드가 성공하면 아무 것도 반환되지 않습니다. |
| NowDataError | 메서드가 실패할 때 throw됩니다.
|
다음 코드 예제에서는 이 메서드를 호출하는 방법을 보여 줍니다.
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입니다. |
| tableName에서 | 문자열 | 인시던트 등 정보를 삭제할 테이블의 이름입니다. |
| 완료 | @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 tableName: String)
지정된 테이블에서 지정된 기록을 삭제합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| sysId | 문자열 | 삭제할 기록의 Sys_id입니다. |
| tableName에서 | 문자열 | 인시던트 등 정보를 삭제할 테이블의 이름입니다. |
| 유형 | 설명 |
|---|---|
| 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 개체를 만듭니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 구성 | NowService구성 | 서비스를 만들 때 사용할 구성 매개 변수입니다. |
| 코어서비스제공자 | NowCoreService제공 | 옵션입니다. 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: Decodable>(with sysId: SysID? = nil, from tableName: String, path: String = Constants.resultPath, coder: Coder = .default, configuration: FetchConfiguration? = nil) async throws
지정된 테이블에서 디코딩 가능한 모델을 검색할 수 있습니다.
{
"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 |
| tableName에서 | 문자열 | 인시던트와 같은 기록을 검색할 테이블의 이름입니다. |
| path | 문자열 | 중첩 유형에 대해 점으로 구분된 경로입니다. 예를 들어, 더 깊은 중첩의 경우 result 또는 foo.bar.baz입니다.기본값: |
| 코더 | 코더 | 옵션입니다. 인스턴스와 주고 받는 데이터를 인코딩하거나 디코딩하는 데 사용할 코더입니다ServiceNow.가능한 값:
기본값: .default |
| 구성 | FetchConfiguration | 옵션입니다. 반환할 기록, 페이지 매김 페이지 크기 제한, 검색할 필드 및 필드에 포함할 항목을 정의하는 필터를 포함하여 검색된 기록에 적용할 구성입니다. 기본값: nil - 모든 기록이 반환됩니다. |
| 유형 | 설명 |
|---|---|
| 모델 | 메서드가 성공할 경우 반환됩니다. 디코디어블 모델. |
| NowDataError | 메서드가 실패할 때 throw됩니다.
|
다음 코드 예제에서는 이 메서드를 호출하는 방법을 보여 줍니다.
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로 단일 Decodable 모델을 가져오는 방법을 보여 줍니다. [User].self 대신 User.self와 같은 단일 모델 유형을 사용합니다.
let result = try await service.model(User.self, with: "5137153cc611227c000bbd1bd8cd2005", from: "sys_user", path: "result")
NowTableService - model<Model: Decodable>(_ 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" }
]
}이 함수를 사용하여 중첩된 출력 대신 디코딩 가능한 모델을 가져옵니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 유형 | 모델.유형 | 디코딩할 값의 유형입니다. |
| sysId와 함께 | 문자열 | 옵션입니다. 반환할 기록의 Sys_id입니다. 기본값: 설정에 따라 반환된 모든 기록입니다 configuration . |
| tableName에서 | 문자열 | 인시던트와 같은 기록을 검색할 테이블의 이름입니다. |
| path | 문자열 | 옵션입니다. 중첩 유형에 대해 점으로 구분된 경로입니다. 예를 들어, 더 깊은 중첩의 경우 result 또는 foo.bar.baz입니다.기본값: |
| 코더 | 코더 | 옵션입니다. 인스턴스와 주고 받는 데이터를 인코딩하거나 디코딩하는 데 사용할 코더입니다ServiceNow.기본값: |
| 구성 | FetchConfiguration | 옵션입니다. 반환할 기록, 페이지 매김 페이지 크기 제한, 검색할 필드 및 필드에 포함할 항목을 정의하는 필터를 포함하여 검색된 기록에 적용할 구성입니다. 기본값: nil - 모든 기록이 반환됩니다. |
| 완료 | @escaping(결과<모델, 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로 디코딩 가능한 단일 모델을 가져오려면 [User].self가 아닌 User.self와 같은 단일 모델 유형을 사용합니다.
service.model(User.self, with: "5137153cc611227c000bbd1bd8cd2005", from: "sys_user", path: "result") { resultin ... }
NowTableService - model<model: Decodable>(with sysId: SysID? = nil, from tableName: 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 |
| tableName에서 | 문자열 | 인시던트와 같은 기록을 검색할 테이블의 이름입니다. |
| path | 문자열 | 중첩 유형에 대해 점으로 구분된 경로입니다. 예를 들어, 더 깊은 중첩의 경우 result 또는 foo.bar.baz입니다.기본값: |
| 코더 | 코더 | 옵션입니다. 인스턴스와 주고 받는 데이터를 인코딩하거나 디코딩하는 데 사용할 코더입니다ServiceNow.가능한 값:
기본값: .default |
| 구성 | FetchConfiguration | 옵션입니다. 반환할 기록, 페이지 매김 페이지 크기 제한, 검색할 필드 및 필드에 포함할 항목을 정의하는 필터를 포함하여 검색된 기록에 적용할 구성입니다. 기본값: 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로 디코딩 가능한 단일 모델을 가져오려면 [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 | 문자열 | 인시던트와 같은 기록을 검색할 테이블의 이름입니다. |
| 구성 | FetchConfiguration | 옵션입니다. 반환할 기록, 페이지 매김 페이지 크기 제한, 검색할 필드 및 필드에 포함할 항목을 정의하는 필터를 포함하여 검색된 기록에 적용할 구성입니다. 기본값: nil - 모든 기록이 반환됩니다. |
| 유형 | 설명 |
|---|---|
| 페이지네이터<데이터> | 성공: 지정된 기록을 포함하는 페이지네이터 객체입니다. 실패: 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)| 이름 | 유형 | 설명 |
|---|---|---|
| tableName에서 | 문자열 | 인시던트와 같은 기록을 검색할 테이블의 이름입니다. |
| 경로 | 문자열 | 중첩 유형에 대해 점으로 구분된 경로입니다. 예를 들어, 더 깊은 중첩을 위한 result 또는 result.user.photos입니다. 사용자 지정 경로를 지정하면 중첩된 데이터를 가져오거나 반복할 수 있습니다.기본값: |
| 코더 | 코더 | 옵션입니다. 인스턴스와 주고 받는 데이터를 인코딩하거나 디코딩하는 데 사용할 코더입니다ServiceNow.가능한 값:
기본값: .default |
| 구성 | FetchConfiguration | 옵션입니다. 반환할 기록, 페이지 매김 페이지 크기 제한, 검색할 필드 및 필드에 포함할 항목을 정의하는 필터를 포함하여 검색된 기록에 적용할 구성입니다. 기본값: nil - 모든 기록이 반환됩니다. |
| 유형 | 설명 |
|---|---|
| 페이지네이터<데이터> | 성공: 페이징된 Decodable 모델을 포함하는 페이지네이터 객체입니다.실패: NowDataError
|
이 예제에서는 디코딩된 사용자 모델을 제공하는 Paginator 개체를 가져오는 방법을 보여 줍니다. 컴파일러에 사용자 모델 컬렉션([User])을 반환하도록 힌트를 주고 사용자가 결과 경로 아래에 중첩되어 있음을 Paginator 개체에 알려 원하는 Paginator 개체를 가져올 수 있습니다.
struct User: Codable {
var name: String
}
let service: NowTableService = ...
let paginator: Paginator<[User]> = service.paginator(from: "sys_user", path: "result")
NowTableService - record(with sysId: SysID, from tableName: String, configuration: FieldReadConfiguration? = nil) 비동기 throws
인스턴스의 지정된 테이블에서 지정된 기록을 조회합니다 ServiceNow .
let dataPublisher: AnyPublisher<Data, NowDataError> = ...
let recordsPublisher: AnyPublisher<[NowRecord], NowDataError> = myPublisher.convertToRecords()| 이름 | 유형 | 설명 |
|---|---|---|
| sysId | 문자열 | 인스턴스에서 반환할 기록의 Sys_id입니다 ServiceNow . |
| tableName에서 | 문자열 | 인시던트와 같은 기록을 검색할 테이블의 이름입니다. |
| 구성 | FetchConfiguration | 옵션입니다. 반환할 기록, 페이지 매김 페이지 크기 제한, 검색할 필드 및 필드에 포함할 항목을 정의하는 필터를 포함하여 검색된 기록에 적용할 구성입니다. 기본값: nil - 모든 기록이 반환됩니다. |
| 유형 | 설명 |
|---|---|
| 데이터 | 메서드가 성공할 경우 반환됩니다. 지정된 기록을 포함하는 데이터 객체입니다. |
| NowDataError | 메서드가 실패할 때 throw됩니다.
|
다음 코드 예제에서는 이 메서드를 호출하는 방법을 보여 줍니다.
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 | 문자열 | 인스턴스에서 반환할 기록의 Sys_id입니다 ServiceNow . |
| tableName에서 | 문자열 | 인시던트와 같은 기록을 검색할 테이블의 이름입니다. |
| 구성 | FetchConfiguration | 옵션입니다. 반환할 기록, 페이지 매김 페이지 크기 제한, 검색할 필드 및 필드에 포함할 항목을 정의하는 필터를 포함하여 검색된 기록에 적용할 구성입니다. 기본값: nil - 모든 기록이 반환됩니다. |
| 완료 | @escaping(결과<데이터, 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(with sysId: SysID, from tableName: String, configuration: FieldReadConfiguration? = nil)
게시자를 만들어 인스턴스의 지정된 테이블에서 ServiceNow 지정된 기록을 검색합니다.
let dataPublisher: AnyPublisher<Data, NowDataError> = ...
let recordsPublisher: AnyPublisher<[NowRecord], NowDataError> = myPublisher.convertToRecords()| 이름 | 유형 | 설명 |
|---|---|---|
| sysId | 문자열 | 인스턴스에서 반환할 기록의 Sys_id입니다 ServiceNow . |
| tableName에서 | 문자열 | 인시던트와 같은 기록을 검색할 테이블의 이름입니다. |
| 구성 | FetchConfiguration | 옵션입니다. 반환할 기록, 페이지 매김 페이지 크기 제한, 검색할 필드 및 필드에 포함할 항목을 정의하는 필터를 포함하여 검색된 기록에 적용할 구성입니다. 기본값: 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: String, configuration: FetchConfiguration? = nil) 비동기 throws
지정된 테이블에서 기록을 조회합니다.
let dataPublisher: AnyPublisher<Data, NowDataError> = ...
let recordsPublisher: AnyPublisher<[NowRecord], NowDataError> = myPublisher.convertToRecords() 큰 결과 집합의 NowTableService - paginator(from tableName: String, configuration: FetchConfiguration? = nil) 경우 이 함수를 사용하여 페이지 매김된 결과를 가져옵니다.| 이름 | 유형 | 설명 |
|---|---|---|
| tableName에서 | 문자열 | 인시던트와 같은 기록을 검색할 테이블의 이름입니다. |
| 구성 | FetchConfiguration | 옵션입니다. 반환할 기록, 페이지 매김 페이지 크기 제한, 검색할 필드 및 필드에 포함할 항목을 정의하는 필터를 포함하여 검색된 기록에 적용할 구성입니다. 기본값: nil - 모든 기록이 반환됩니다. |
| 유형 | 설명 |
|---|---|
| 데이터 | 메서드가 성공할 경우 반환됩니다. 지정된 기록을 포함하는 데이터 객체입니다. |
| NowDataError | 메서드가 실패할 때 throw됩니다.
|
다음 코드 예제에서는 이 메서드를 호출하는 방법을 보여 줍니다.
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) 경우 이 함수를 사용하여 페이지 매김된 결과를 가져옵니다.| 이름 | 유형 | 설명 |
|---|---|---|
| tableName의 | 문자열 | 인시던트 등의 기록을 작성할 테이블의 이름입니다. |
| 구성 | FetchConfiguration | 옵션입니다. 반환할 기록, 페이지 매김 페이지 크기 제한, 검색할 필드 및 필드에 포함할 항목을 정의하는 필터를 포함하여 검색된 기록에 적용할 구성입니다. 기본값: nil - 모든 기록이 반환됩니다. |
| 완료 | @escaping(결과<데이터, 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) 경우 이 함수를 사용하여 페이지 매김된 결과를 가져옵니다.| 이름 | 유형 | 설명 |
|---|---|---|
| tableName에서 | 문자열 | 인시던트와 같은 기록을 검색할 테이블의 이름입니다. |
| 구성 | FetchConfiguration | 옵션입니다. 반환할 기록, 페이지 매김 페이지 크기 제한, 검색할 필드 및 필드에 포함할 항목을 정의하는 필터를 포함하여 검색된 기록에 적용할 구성입니다. 기본값: 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) async throws
지정된 테이블에서 지정된 코드 가능 모델을 업데이트합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 모델 | 모델 | 테이블에서 업데이트할 SysIdentifiableModel 모델입니다. |
| tableName의 | 문자열 | 인시던트 등의 기록을 작성할 테이블의 이름입니다. |
| 코더 | 코더 | 옵션입니다. 인스턴스와 주고 받는 데이터를 인코딩하거나 디코딩하는 데 사용할 코더입니다ServiceNow.가능한 값:
기본값: .default |
| write옵션 | FieldWriteOptions | 옵션입니다. 기록에 기록되는 데이터에 적용할 구성 옵션입니다. 기본값: nil |
| 구성 | FetchConfiguration | 옵션입니다. 반환할 기록, 페이지 매김 페이지 크기 제한, 검색할 필드 및 필드에 포함할 항목을 정의하는 필터를 포함하여 검색된 기록에 적용할 구성입니다. 기본값: nil - 모든 기록이 반환됩니다. |
| 유형 | 설명 |
|---|---|
| 모델 | 메서드가 성공할 경우 반환됩니다. 지정된 테이블에서 업데이트된 결정 가능한 모델입니다. |
| NowDataError | 메서드가 실패할 때 throw됩니다.
|
다음 코드 예제에서는 이 메서드를 호출하는 방법을 보여 줍니다.
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 실행합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 모델 | 모델 | 테이블에서 업데이트할 SysIdentifiableModel 모델입니다. |
| tableName의 | 문자열 | 인시던트 등의 기록을 작성할 테이블의 이름입니다. |
| 코더 | 코더 | 옵션입니다. 인스턴스와 주고 받는 데이터를 인코딩하거나 디코딩하는 데 사용할 코더입니다ServiceNow.가능한 값:
기본값: .default |
| write옵션 | FieldWriteOptions | 옵션입니다. 기록에 기록되는 데이터에 적용할 구성 옵션입니다. 기본값: nil |
| 구성 | FetchConfiguration | 옵션입니다. 반환할 기록, 페이지 매김 페이지 크기 제한, 검색할 필드 및 필드에 포함할 항목을 정의하는 필터를 포함하여 검색된 기록에 적용할 구성입니다. 기본값: nil - 모든 기록이 반환됩니다. |
| 완료 | @escaping(결과<모델, 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)
지정된 테이블에서 지정된 코드 가능 모델을 업데이트합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 모델 | 모델 | 테이블에서 업데이트할 SysIdentifiableModel 모델입니다. |
| tableName의 | 문자열 | 인시던트 등의 기록을 작성할 테이블의 이름입니다. |
| 코더 | 코더 | 옵션입니다. 인스턴스와 주고 받는 데이터를 인코딩하거나 디코딩하는 데 사용할 코더입니다ServiceNow.가능한 값:
기본값: .default |
| write옵션 | FieldWriteOptions | 옵션입니다. 기록에 기록되는 데이터에 적용할 구성 옵션입니다. 기본값: nil |
| 구성 | FetchConfiguration | 옵션입니다. 반환할 기록, 페이지 매김 페이지 크기 제한, 검색할 필드 및 필드에 포함할 항목을 정의하는 필터를 포함하여 검색된 기록에 적용할 구성입니다. 기본값: 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) 비동기 throws
지정된 기록을 지정된 필드로 업데이트합니다.
let dataPublisher: AnyPublisher<Data, NowDataError> = ...
let recordsPublisher: AnyPublisher<[NowRecord], NowDataError> = myPublisher.convertToRecords()sys_ 인 필드는 일반적으로 자동으로 생성되고 업데이트할 수 없는 시스템 매개변수입니다. 지정되지 않고 시스템에서 자동 생성되지 않는 필드는 연관된 데이터 유형의 null 값으로 설정됩니다.| 이름 | 유형 | 설명 |
|---|---|---|
| sysId | 문자열 | 인스턴스에서 반환할 기록의 Sys_id입니다 ServiceNow . |
| 필드 포함 | [필드 이름: 필드 값] | 기록에 포함할 필드의 이름-값 쌍입니다. |
| tableName의 | 문자열 | 인시던트 등의 기록을 작성할 테이블의 이름입니다. |
| write옵션 | FieldWriteOptions | 옵션입니다. 기록에 기록되는 데이터에 적용할 구성 옵션입니다. 기본값: nil |
| 구성 | FetchConfiguration | 옵션입니다. 반환할 기록, 페이지 매김 페이지 크기 제한, 검색할 필드 및 필드에 포함할 항목을 정의하는 필터를 포함하여 검색된 기록에 적용할 구성입니다. 기본값: nil - 모든 기록이 반환됩니다. |
| 유형 | 설명 |
|---|---|
| 데이터 | 메서드가 성공할 경우 반환됩니다. 업데이트된 기록을 포함하는 데이터 객체입니다. |
| NowDataError | 메서드가 실패할 때 throw됩니다.
|
다음 코드 예제에서는 이 메서드를 호출하는 방법을 보여 줍니다.
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 | 문자열 | 인스턴스에서 반환할 기록의 Sys_id입니다 ServiceNow . |
| 필드 포함 | [필드 이름: 필드 값] | 기록에 포함할 필드의 이름-값 쌍입니다. |
| tableName의 | 문자열 | 인시던트 등의 기록을 작성할 테이블의 이름입니다. |
| write옵션 | FieldWriteOptions | 옵션입니다. 기록에 기록되는 데이터에 적용할 구성 옵션입니다. 기본값: nil |
| 구성 | FetchConfiguration | 옵션입니다. 반환할 기록, 페이지 매김 페이지 크기 제한, 검색할 필드 및 필드에 포함할 항목을 정의하는 필터를 포함하여 검색된 기록에 적용할 구성입니다. 기본값: nil - 모든 기록이 반환됩니다. |
| 완료 | @escaping(결과<데이터, 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 | 문자열 | 인스턴스에서 반환할 기록의 Sys_id입니다 ServiceNow . |
| 필드 포함 | [필드 이름: 필드 값] | 기록에 포함할 필드의 이름-값 쌍입니다. |
| tableName의 | 문자열 | 인시던트 등의 기록을 작성할 테이블의 이름입니다. |
| write옵션 | FieldWriteOptions | 옵션입니다. 기록에 기록되는 데이터에 적용할 구성 옵션입니다. 기본값: nil |
| 구성 | FetchConfiguration | 옵션입니다. 반환할 기록, 페이지 매김 페이지 크기 제한, 검색할 필드 및 필드에 포함할 항목을 정의하는 필터를 포함하여 검색된 기록에 적용할 구성입니다. 기본값: 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)