---
sourceDocument: Xanadu API 참조
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/ko-KR/xanadu/api-reference

 Release :

    - xanadu

ft:locale :

    - ko-KR

ft:publication_title :

    - Xanadu API 참조

ft:clusterId :

    - crapiref

bundleId :

    - crapiref

workflow :

    - Creator


---

# 인스턴스의 ServiceNow 테이블 데이터와 상호작용

# 인스턴스의 ServiceNow 테이블 데이터와 상호작용 {#ariaid-title1}

* 릴리스 버전: Xanadu
* 
* 업데이트 날짜 2024년 08월 01일
* 
* ![](https://www.servicenow.com/docs/portal-asset/ico-clock) 소요 시간: 8분

이를 Mobile SDK 통해 인스턴스에 있는 테이블의 데이터와 상호작용할 수 있습니다 ServiceNow . REST 인터페이스를 직접 호출하는 NowTableService() API를 사용하거나 REST GraphQL API에 대해 지정된 GraphQL 쿼리를 실행하는 NowGraphQLService() API를 통해 REST 테이블 API를 통해 ServiceNow 이 데이터와 상호 작용할 수 있습니다.
단일 호출 내에서 여러 테이블의 데이터를 반환하려면 NowGraphQLService() API를 사용해야 합니다. 다른 ServiceNow REST API와 상호 작용해야 하는 경우 을 참조하십시오 [인스턴스에서 공용 REST API와 ServiceNow 상호 작용](https://servicenow-prod.fluidtopics.net/xwnWtuWCVBT64y9q9_dohg "Mobile SDK iOS 애플리케이션이 인스턴스에서 ServiceNow 공용 REST API를 호출할 수 있도록 하는 기능을 제공합니다.").

## NowGraphQLService를 사용하여 테이블과 ServiceNow 상호작용 {#mobsdk-ios-interact_data_instance__section_kxm_wdf_hqb}

[NowGraphQLService](https://servicenow-prod.fluidtopics.net/dgk0OjOx_ykXCKnJKtUtCQ#NowGraphQLServiceiOSAPI "NowGraphQLService 클래스는 GraphQL REST API를 통해 인스턴스의 데이터에 대해 GraphQL 쿼리를 사용하여 요청할 수 ServiceNow 있는 기능을 제공합니다.") 클래스는 로그인한 사용자에게 적절한 권한이 있는 경우 인스턴스 내의 ServiceNow 지정된 테이블에서 GraphQL 쿼리를 구성하고 실행할 수 있는 메서드를 제공합니다. GraphQL 쿼리 내에서 모든 CRUD 작업을 정의할 수 있습니다.  
NowGraphQLService 는 완료 처리기를 반환하여 쿼리에 대한 결과 가져오기를 지원합니다.

    func execute(_ query: GraphQLQuery, completion: @escaping (Result<Data, NowDataError>) → Void)

async/await를 통해:

    func execute(_ query: GraphQLQuery) async throws -> Data

또는 [Combine](https://developer.apple.com/documentation/combine) 게시자 (현재 더 이상 사용되지 않음) :

    func publisher(for query: GraphQlQuery) → AnyPublisher<Data, NowDataError>

다음 예제에서는 NowData 프레임워크를 가져온 다음 인스턴스의 테이블과 상호 작용하는 데 사용할 수 있는 NowGraphQLService 개체를 초기화하는 방법을 보여 줍니다 ServiceNow .

    // Import the NowData framework
    import NowData

    // Initialize a NowGraphQLService
    // The makeGraphQLService completion handler returns a result that wraps 
    // the NowGraphQLService upon success or error. 

    private func initializeGraphQLService(instanceUrl: URL) {
      makeGraphQLService(instanceUrl: instanceUrl) { [weak self] result in
        switch result {
        case .success(let service):
          self?.graphQLService = service
        case .failure(let error):
          debugPrint("Creating GraphQL service failed with error: \(error.localizedDescription)")
          self?.graphQLService = nil
        }
      }
    }

이 예제에서는 가장 최근에 게시된 KB 문서를 가져오고 게시하는 비동기 함수를 만드는 방법을 보여 줍니다.

    private func fetchArticles() async throws -> [Article] { 
        guard let graphQLService = graphQLService else { 
            throw ArticleListError.invalidGraphQLService 
        }         

        do {
            let data = try await graphQLService.execute(GraphQLQuery(query: recentlyPublishedQuery))
            let articles = try dataToArticleList(data)
        } catch let error as NowDataError {
            throw ArticleListError.fetchError(error)
        } catch {
            throw error
        }
    } 
      
    private let recentlyPublishedQuery = 
    """ 

    {
      GlideRecord_Query {
        kb_knowledge(queryConditions: "active=true^ORDERBYpublishedDESC" pagination: { limit: 10, offset: 0 }) {
          _results { 
            sys_id {
              value
            },
            number {
              displayValue
            },
            short_description {
              displayValue
            },
            author {
              displayValue
            }
            published {
              displayValue
            }
          }
        }
      }
    }
    """

## NowTableService를 사용하여 테이블과 ServiceNow 상호 작용 {#mobsdk-ios-interact_data_instance__section_fgn_gy2_hqb}

[NowTableService](https://servicenow-prod.fluidtopics.net/aRAut0lGc5k7FI2JZTI6Nw#NowTableServiceiOSAPI "NowTableService 클래스는 기존 ServiceNow 테이블의 레코드에 대한 만들기, 읽기, 업데이트 및 삭제 작업을 수행할 수 있는 함수를 제공합니다.") 클래스는 인스턴스에 상주 ServiceNow 하는 테이블의 레코드에 대해 CRUD 작업을 수행하는 메서드를 제공합니다. 이 인터페이스를 통해 로그인한 사용자에게 권한이 부여된 테이블 ServiceNow 내의 모든 기록에 직접 액세스할 수 있습니다. NowTableService 는 참조 필드에 대한 닷워킹을 지원합니다. 예를 들어 테이블에 사용자 테이블에 대한 참조가 포함되어 있는 경우 닷워킹 값은 `user.name` 사용자의 이름을 반환합니다.

요청된 데이터를 반환할 때 적용 가능한 모든 ACL(접근 제어 목록)이 데이터에 적용되므로 결과가 예상보다 적거나 인증된 사용자에게 지정된 테이블에 대한 액세스 권한이 없는 경우 권한 부여 오류가 발생할 수 있습니다.

대부분의 NowTableService 메서드는 결과 데이터를 반환하기 위한 세 가지 구현을 제공합니다. 하나는 async/await를 사용하고, 하나는 열거형을 사용하여 Result 완료 처리기를 호출하고, 다른 하나는 현재 더 이상 사용되지 않는 [Combine](https://developer.apple.com/documentation/combine) 게시자를 반환합니다.

예를 들어, 모든 createRecord() 메서드는 생성된 레코드를 지정된 테이블에 삽입하지만,

[NowTableService - createRecord(필드 포함: [FieldName: FieldValue], tableName: String, writeOptions: FieldWriteOptions, 구성: FieldReadConfiguration, 완료: @escaping(Result<Data, NowDataError>)](aRAut0lGc5k7FI2JZTI6Nw#NTblServ-createRecord_S_O_O_O "지정된 기록을 지정된 테이블에 삽입한 다음 기록이 저장된 후 처리기를 completion 실행합니다.")

메서드는 열거형을 사용하여 Result 완료 처리기를 호출합니다( `.success` 사례에는 결과가 연결된 값으로 포함됨).

는
[NowTableService - createRecord(with fields: [FieldName: FieldValue], in tableName: String, writeOptions: FieldWriteOptions? = nil, configuration: FieldReadConfiguration? = nil) 비동기 던지기](aRAut0lGc5k7FI2JZTI6Nw#NTblServ-createRecord-async_S_O_O "지정된 필드를 포함하는 지정된 테이블에 기록을 삽입합니다.")

메서드는 async/await 함수를 수행합니다. 동안

[NowTableService - createRecord(필드 포함: [FieldName: FieldValue], tableName: String, writeOptions: FieldWriteOptions? = nil, 구성: FieldReadConfiguration? = nil)](aRAut0lGc5k7FI2JZTI6Nw#NTblServ-createRecord_S_O_O "지정된 필드를 포함하는 지정된 테이블에 기록을 삽입합니다.")`
`

메서드는 Combine 게시자를 반환하지만 현재 더 이상 사용되지 않습니다.

또한 NowTableService 는 원시 데이터를 반환하는 것과 코딩 가능한 모델을 반환하는 두 가지 CRUD 메서드 구현을 제공합니다. 예를 들어, update() 및 updateRecord() 메서드는 모두 지정된 테이블에서 지정된 레코드를 업데이트하지만 update() 메서드는 코드 가능 모델을 반환하고 updateRecord() 메서드는 원시 데이터를 반환합니다. 경우에 따라 강력한 형식의 Codable 구조체가 원시 데이터 필드의 컬렉션보다 더 많은 유연성을 제공하므로 Codable 메서드가 더 나을 수 있습니다.  
다음 예제에서는 NowData 프레임워크를 가져온 다음 인스턴스 테이블과 ServiceNow 상호 작용하는 데 사용할 수 있는 NowTableService 개체를 초기화하는 방법을 보여 줍니다.

    // Import the NowData framework
    import NowData

    // Initialize a NowTableService
    // The makeTableService completion handler returns a result that wraps 
    // the NowTableService upon success or error. 

    makeTableService(instanceUrl: instanceUrl) { [weak self] result in
      guard let self = self else { return }
      
      switch result {
      case .success(let tableService):
        debugPrint("Successfully created a table service \(tableService)")
        self.tableService = tableService
      case .failure(let error):
        debugPrint("Creating table service failed with error: \(error.localizedDescription)")
      }
    }

사용 가능한 NowTableService 메서드를 사용하는 추가 코드 예제는 [NowTableService 클래스 - iOS](https://servicenow-prod.fluidtopics.net/aRAut0lGc5k7FI2JZTI6Nw#NowTableServiceiOSAPI "NowTableService 클래스는 기존 ServiceNow 테이블의 레코드에 대한 만들기, 읽기, 업데이트 및 삭제 작업을 수행할 수 있는 함수를 제공합니다.")` `API 설명서를 참조하세요.

