Now AttachmentService-Klasse – iOS
Die Jetzt AttachmentService Die Klasse bietet Funktionen, mit denen Sie Anhänge hochladen und abfragen können, die Datensätzen in einer Tabelle auf zugeordnet sind ServiceNow Instanz.
Sie können mit jeder Anforderung eine einzelne Datei hochladen oder abrufen. Jetzt AttachmentService Beachtet alle Systembeschränkungen für hochgeladene Dateien, z. B. maximale Dateigröße und zulässige Anhangstypen. Sie können diese Einstellungen mithilfe der Instanzeigenschaften com.Glide.attachment.max_size, standardmäßig 1024 MB und Glide.attachment.Extensions steuern.
| Name | Typ | Beschreibung |
|---|---|---|
| konfigurieren | Jetzt Servicekonfiguration | Konfigurationseinstellungen, die bei der Initialisierung des Service bereitgestellt wurden. |
Now AttachmentService: Asynchrone Auslöse des Anhangs (für sysId: Zeichenfolge, validateAttachment: Boolescher Wert)
Ruft den Anhang mit der angegebenen sys_ID ab und validiert den Anhang, indem der berechnete Hash des Anhangs mit der erwarteten SHA256-Prüfsumme verglichen wird.
Falsch . Sie können den Anhang bei Bedarf später validieren, indem Sie aufrufen Anhang.validieren() Funktion.| Name | Typ | Beschreibung |
|---|---|---|
| Für sysId | Zeichenfolge | SYS_ID des abzurufenden Anhangs. |
| ValidierteAnhang | Boolean | Kennzeichnung, die angibt, ob der Anhang validiert werden soll. Gültige Werte:
Standardwert: wahr |
| Typ | Beschreibung |
|---|---|
| Jetzt Anhang | Wird zurückgegeben, wenn die Methode erfolgreich ist. Angegebener Anhang. |
| Jetzt Datenfehler | Wird ausgelöst, wenn die Methode fehlschlägt.
|
Die folgenden Codebeispiele zeigen, wie diese Methode aufgerufen wird.
func downloadAttachment(sysId: String) async throws -> NowAttachment {
do {
let nowAttachment = try await attachmentService.attachment(for: sysId, validateAttachment: false)
return nowAttachment
} catch {
// Handle NowDataError
throw error
}
}
Now AttachmentService – Anhang(für sysId: Zeichenfolge, validateAttachment: Boolescher Wert, Abschluss: @Escaping (Result<NowAttachment, NowDataError>))
Ruft den Anhang mit der angegebenen sys_ID ab und validiert den Anhang, indem der berechnete Hash des Anhangs mit der erwarteten SHA256-Prüfsumme verglichen wird. Nach Abschluss wird der übergebene Abschlusshandler ausgeführt.
Falsch . Sie können den Anhang bei Bedarf später validieren, indem Sie aufrufen Anhang.validieren() Funktion.| Name | Typ | Beschreibung |
|---|---|---|
| Für sysId | Zeichenfolge | SYS_ID des abzurufenden Anhangs. |
| ValidierteAnhang | Boolean | Kennzeichnung, die angibt, ob der Anhang validiert werden soll. Gültige Werte:
Standardwert: wahr |
| Abschluss | @Escaping (Ergebnis< Jetzt Anhang , NowDataError>) | Fertigstellungs-Handler, der ausgeführt werden soll, nachdem der Anhang abgerufen wurde. Rückgabewerte für den Abschlusshandler:
|
| Typ | Beschreibung |
|---|---|
| Keine |
Das folgende Codebeispiel zeigt, wie diese Funktion aufgerufen wird.
let sysId = UUID().uuidString // UUID for the attachment
private func downloadAttachment(sysId: String) {
attachmentService.attachment(for: sysId, validateAttachment: false) { (result) in
switch result {
case .success(let attachment):
// Attachment retrieved successful, return attachment
case .failure(let error):
// Attachment retrieved failed, return NowDataError
}
}
}
Now AttachmentService – Anhang (für sysId: Zeichenfolge, validateAttachment: Boolescher Wert)
Ruft den Anhang mit der angegebenen sys_ID ab und validiert den Anhang, indem der berechnete Hash des Anhangs mit dem erwarteten Hash verglichen wird.
Falsch . Bei Bedarf können Sie den Anhang zu einem späteren Zeitpunkt validieren, indem Sie aufrufen Anhang.validieren() Funktion.| Name | Typ | Beschreibung |
|---|---|---|
| Für sysId | Zeichenfolge | SYS_ID des abzurufenden Anhangs. |
| ValidierteAnhang | Boolean | Kennzeichnung, die angibt, ob der Anhang validiert werden soll. Gültige Werte:
Standardwert: wahr |
| Typ | Beschreibung |
|---|---|
| AnyPublisher< Jetzt Anhang , NowDataError> | Erfolg: Jetzt Anhang – Enthält den angegebenen Anhang. Fehler: Now DataError
|
Das folgende Codebeispiel zeigt, wie diese Funktion aufgerufen wird.
let sysId = UUID().uuidString // UUID for the attachment
private func downloadAttachment(sysId: String) {
let publisher = self.attachmentService.attachment(for: sysId, validateAttachment: false)
publisher
.receive(on: DispatchQueue.main)
.sink { [weak self] completion in
if case let .failure(error) = completion {
// Attachment retrieved failed, return NowDataError
}
} receiveValue: { [weak self] (attachment) in
// Attachment retrieved successful, return attachment
}
.store(in: &subscriptions)
}
Now AttachmentService: AnhangMetadata(Filter: Filter, Limit: INT) asynchrone Auslöse
Ruft die Metadaten für alle Anhänge ab, die die angegebenen Kriterien erfüllen.
| Name | Typ | Beschreibung |
|---|---|---|
| Filter | Filter | Optional. Abfragezeichenfolge, die zum Filtern der Anhänge verwendet werden soll, deren Metadaten zurückgegeben werden sollen. Standard: Nil – gibt Metadaten für alle verfügbaren Anhänge zurück. Berücksichtigt limitParameter. |
| limit | Ganzzahl | Optional. Maximale Anzahl der zurückzugebenden Metadaten der Anhangsdatei. Standard: Nil – gibt alle Metadaten zurück, die den entsprechen filterParameterspezifikationen. |
| Typ | Beschreibung |
|---|---|
| [Now AttachmentMetadata] | Wird zurückgegeben, wenn die Methode erfolgreich ist. Array, das die Metadaten für die übereinstimmenden Anhänge enthält. |
| Jetzt Datenfehler | Wird ausgelöst, wenn die Methode fehlschlägt.
|
Die folgenden Codebeispiele zeigen, wie diese Methode aufgerufen wird.
let filter = Filter(criteria: [], sortBy: [.desc("created")],
queryCategory: nil)
do {
let metadata = try await attachmentService.attachmentMetadata(filter: filter, limit: 10)
// Metadata retrieval successful
} catch {
// Metadata retrieval failed, NowDataError thrown
}
NowAttachmentService – attachmentMetadata(Filter: Filter, Grenzwert: INT, Abschluss: @Escaping (Ergebnis<[NowAttachmentMetadata], NowDataError>))
Ruft die Metadaten für alle Anhänge ab, die die angegebenen Kriterien erfüllen.
| Name | Typ | Beschreibung |
|---|---|---|
| Filter | Filter | Optional. Abfragezeichenfolge, die zum Filtern der Anhänge verwendet werden soll, deren Metadaten zurückgegeben werden sollen. Standard: Nil – gibt Metadaten für alle verfügbaren Anhänge zurück. Berücksichtigt limitParameter. |
| limit | Ganzzahl | Optional. Maximale Anzahl der zurückzugebenden Metadaten der Anhangsdatei. Standard: Nil – gibt alle Metadaten zurück, die den entsprechen filterParameterspezifikationen. |
| Abschluss | @Escaping (Ergebnis<[ NowAttachmentMetadata ], NowDataError>) | Fertigstellungs-Handler, der nach dem Abrufen der Metadaten ausgeführt werden soll. Rückgabewerte für den Abschlusshandler:
|
| Typ | Beschreibung |
|---|---|
| Keine |
Das folgende Codebeispiel zeigt, wie diese Funktion aufgerufen wird.
let query = "active=true^short_descriptionLIKEbroken"
let filter = Filter(query: query)
attachmentService.attachmentMetadata(filter: filter, limit: limit) { (result) in
DispatchQueue.main.async { [weak self] in
switch result {
case .success(let response):
do {
let data = try JSONEncoder().encode(response)
// Retrieve metadata successfully, return data
} catch {
// Retrieve metadata failed, return error
}
case .failure(let error):
// Retrieve metadata failed, return NowDataError
}
}
}
Now AttachmentService – attachmentMetadata(Filter: Filter, Grenzwert: INT)
Ruft die Metadaten für alle Anhänge ab, die die angegebenen Kriterien erfüllen.
| Name | Typ | Beschreibung |
|---|---|---|
| Filter | Filter | Optional. Abfragezeichenfolge, die zum Filtern der Anhänge verwendet werden soll, deren Metadaten zurückgegeben werden sollen. Standard: Nil – gibt Metadaten für alle verfügbaren Anhänge zurück. Berücksichtigt limitParameter. |
| limit | Ganzzahl | Optional. Maximale Anzahl der zurückzugebenden Metadaten der Anhangsdatei. Standard: Nil – gibt alle Metadaten zurück, die den entsprechen filterParameterspezifikationen. |
| Typ | Beschreibung |
|---|---|
| AnyPublisher<[ NowAttachmentMetadata ], NowDataError> | Erfolg: Now AttachmentMetadata: Objekte, die die Metadaten für die übereinstimmenden Anhänge enthalten. Fehler: Now DataError
|
Das folgende Codebeispiel zeigt, wie diese Funktion aufgerufen wird.
let query = "active=true^short_descriptionLIKEbroken"
let filter = Filter(query: query)
let publisher = self.attachmentService.attachmentMetadata(filter: filter)
publisher
.receive(on: DispatchQueue.main)
.encode(encoder: JSONEncoder())
.sink { [weak self] completion in
if case let .failure(error) = completion {
// Retrieve metadata failed, return NowDataError
} receiveValue: { [weak self] (data) in
// Retrieve metadata successfully, return data
}
.store(in: &subscriptions
Now AttachmentService: AnhangMetadata (für sysId: Zeichenfolge) asynchrone Auslöse
Ruft die Metadaten für den Anhang ab, der der angegebenen sys_ID zugeordnet ist
| Name | Typ | Beschreibung |
|---|---|---|
| Für sysId | Zeichenfolge | SYS_ID des Anhangs, dessen Metadaten abgerufen werden sollen. |
| Typ | Beschreibung |
|---|---|
| Now AttachmentMetadaten | Wird zurückgegeben, wenn die Methode erfolgreich ist. Metadaten für den angeforderten Anhang. |
| Jetzt Datenfehler | Wird ausgelöst, wenn die Methode fehlschlägt.
|
Die folgenden Codebeispiele zeigen, wie diese Methode aufgerufen wird.
do {
let metadata = try await attachmentService.attachmentMetadata(for: sysId)
// Metadata retrieval successful
} catch {
// Metadata retrieval failed, NowDataError thrown
}
Now AttachmentService – attachmentMetadata (für sysId: Zeichenfolge, Abschluss: @Escaping (Result<NowAttachmentMetadata, NowDataError>))
Ruft die Metadaten für den Anhang ab, der der angegebenen sys_ID zugeordnet ist, und führt dann den Abschlusshandler aus, nachdem die Metadaten abgerufen wurden.
| Name | Typ | Beschreibung |
|---|---|---|
| Für sysId | Zeichenfolge | SYS_ID des Anhangs, dessen Metadaten abgerufen werden sollen. |
| Abschluss | @Escaping (Ergebnis< NowAttachmentMetadata , NowDataError>) | Fertigstellungs-Handler, der nach dem Abrufen der Metadaten ausgeführt werden soll. Rückgabewerte für den Abschlusshandler:
|
| Typ | Beschreibung |
|---|---|
| Keine |
Das folgende Codebeispiel zeigt, wie diese Funktion aufgerufen wird.
let sysId = UUID().uuidString // UUID for the attachment
attachmentService.attachmentMetadata(for: sysId) { (result) in
DispatchQueue.main.async { [weak self] in
switch result {
case .success(let response):
do {
let data = try JSONEncoder().encode(response)
// Retrieve metadata successfully, return data
} catch {
// Retrieve metadata failed, return error
}
case .failure(let error):
// Retrieve metadata failed, return NowDataError
}
}
}
Now AttachmentService – attachmentMetadata (für sysId: Zeichenfolge)
Ruft die Metadaten für den Anhang ab, der der angegebenen sys_ID zugeordnet ist
| Name | Typ | Beschreibung |
|---|---|---|
| Für sysId | Zeichenfolge | SYS_ID des Anhangs, dessen Metadaten abgerufen werden sollen. |
| Typ | Beschreibung |
|---|---|
| AnyPublisher<[ NowAttachmentMetadata ], NowDataError> | Erfolg: Now AttachmentMetadata: Objekt, das die Metadaten für den angeforderten Anhang enthält. Fehler: Now DataError
|
Das folgende Codebeispiel zeigt, wie diese Funktion aufgerufen wird.
let sysId = UUID().uuidString // UUID for the attachment
let publisher = self.attachmentService.attachmentMetadata(for: sysId)
publisher
.receive(on: DispatchQueue.main)
.encode(encoder: JSONEncoder())
.sink { [weak self] completion in
if case let .failure(error) = completion {
// Retrieve metadata failed, return NowDataError
}
} receiveValue: { [weak self] (data) in
// Retrieve metadata successfully, return data
}
.store(in: &subscriptions)
Now AttachmentService – attachmentMetadataPaginator(Filter: Filter, Grenzwert: INT)
Ruft die Metadaten für alle Anhänge ab, die die angegebenen Kriterien erfüllen, und gibt ein Paginator-Objekt zurück, das durch die Seiten der zurückgegebenen Metadaten iteriert werden kann.
| Name | Typ | Beschreibung |
|---|---|---|
| Filter | Filter | Optional. Abfragezeichenfolge, die zum Filtern der Anhänge verwendet werden soll, deren Metadaten zurückgegeben werden sollen. Standard: Nil – gibt Metadaten für alle verfügbaren Anhänge zurück. Berücksichtigt limitParameter. |
| limit | Ganzzahl | Optional. Maximale Anzahl der zurückzugebenden Metadaten der Anhangsdatei. Standard: Nil – gibt alle Metadaten zurück, die den entsprechen filterParameterspezifikationen. |
| Typ | Beschreibung |
|---|---|
| Paginator <[ NowAttachmentMetadata ]> | Erfolg: Array von Now AttachmentMetadata-Objekten. Fehler: Now DataError-Objekt.
|
Das folgende Codebeispiel zeigt, wie diese Funktion aufgerufen wird.
let paginator: Paginator<T> = makePaginator(query: query, fetchLimit: 1)
func makePaginator(query: String, fetchLimit: Int?) -> Paginator<[NowAttachmentMetadata]> {
attachmentsService.attachmentMetadataPaginator(filter: Filter(query: query), limit: fetchLimit)
}
Now AttachmentService – asynchrone Auslöse (sysId: Zeichenfolge)
Löscht den Anhang mit der angegebenen sys_ID
| Name | Typ | Beschreibung |
|---|---|---|
| sysId | Zeichenfolge | SYS_ID des zu löschenden Anhangs. |
| Typ | Beschreibung |
|---|---|
| Keine | Es wird nichts zurückgegeben, wenn die Methode erfolgreich war. |
| Jetzt Datenfehler | Wird ausgelöst, wenn die Methode fehlschlägt.
|
Die folgenden Codebeispiele zeigen, wie diese Methode aufgerufen wird.
do {
try await attachmentService.delete(sysId: sysId)
// Deletion successful
} catch {
// Deletion failed, NowDataError thrown
}
Now AttachmentService – DELETE(sysId: Zeichenfolge, Abschluss: @Escaping (Result<Void, NowDataError>))
Löscht den Anhang mit der angegebenen sys_ID und führt dann den übergebenen Abschlusshandler aus, nachdem der Anhang gelöscht wurde.
| Name | Typ | Beschreibung |
|---|---|---|
| sysId | Zeichenfolge | SYS_ID des zu löschenden Anhangs. |
| Abschluss | @Escaping (Result<Void, NowDataError>) | Fertigstellungs-Handler, der ausgeführt werden soll, nachdem der Anhang gelöscht wurde. Rückgabewerte für den Abschlusshandler:
|
| Typ | Beschreibung |
|---|---|
| Keine |
Das folgende Codebeispiel zeigt, wie diese Funktion aufgerufen wird.
let sysId = UUID().uuidString // UUID for the attachment
attachmentService.delete(sysId: sysId) { (result) in
DispatchQueue.main.async { [weak self] in
switch result {
case .success:
// Attachment with sysId is deleted
case .failure(let error):
// Failed to delete, with NowDataError
}
}
}
Now AttachmentService – delete(sysId: Zeichenfolge)
Löscht den Anhang mit der angegebenen sys_ID
| Name | Typ | Beschreibung |
|---|---|---|
| sysId | Zeichenfolge | SYS_ID des zu löschenden Anhangs. |
| Typ | Beschreibung |
|---|---|
| AnyPublisher<Void, NowDataError> | Erfolg: Nichts zurückgegeben Fehler: Now DataError
|
Das folgende Codebeispiel zeigt, wie diese Funktion aufgerufen wird.
let publisher = attachmentService.delete(sysId: sysId)
publisher
.receive(on: DispatchQueue.main)
.sink { [weak self] completion in
switch completion {
case .finished:
// Attachment with sysId is deleted
case .failure(let error):
// Failed to delete, with NowDataError
}
} receiveValue: {
}
.store(in: &subscriptions)
NowAttachmentService – init(Konfiguration: NowServiceConfiguration, coreServiceProvider: NowCoreServiceProviding)
Initialisiert eine neue Now AttachmentService-Instanz.
| Name | Typ | Beschreibung |
|---|---|---|
| konfigurieren | Jetzt Servicekonfiguration | Konfigurationsinformationen, die zum ordnungsgemäßen Initialisieren des Service erforderlich sind. |
| CoreServiceanbieter | Jetzt CoreServicebereitstellung | Optional. Objekt, das das NowCoreServiceProviding-Protokoll implementiert. Standard: Null |
Das folgende Codebeispiel zeigt, wie diese Funktion aufgerufen wird.
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 attachmentService = NowAttachmentService(configuration: serviceConfig, coreServiceProvider: coreService)
Now AttachmentService – asynchrone Auslöser hochladen(Daten: Daten, Konfiguration: NowAttachmentUploadConfiguration, progressUpdate: @Escaping ProgressUpdate)
Lädt die Anhangsdaten hoch und hängt sie an einen Datensatz in einer Tabelle an, wie in der Upload-Konfiguration angegeben.
Die Fortschrittsaktualisierung Rückruf bietet Informationen zum Upload-Fortschritt, die Sie dann verwenden können, um UI-Feedback bereitzustellen.
| Name | Typ | Beschreibung |
|---|---|---|
| Daten | Daten | Hochzuladender Anhang. |
| konfigurieren | Now AttachmentUpload-Konfiguration | Konfigurationsinformationen, die die Upload-Parameter für den Anhang definieren, z. B.:
|
| FortschrittsUpdate | @Escape-Statusaktualisierung | Fertigstellungs-Handler, der ausgeführt werden soll, nachdem der Anhang abgerufen wurde. Dies wird mehrmals aufgerufen, bis der Upload-Prozess abgeschlossen ist. Rückgabewerte für den Abschlusshandler: Fortschrittsaktualisierung: Gibt den aktuellen Fortschritt des Uploads zurück.
|
| Typ | Beschreibung |
|---|---|
| Now AttachmentMetadaten | Wird zurückgegeben, wenn die Methode erfolgreich ist. Objekt, das die hochgeladenen Metadaten enthält. |
| Jetzt Datenfehler | Wird ausgelöst, wenn die Methode fehlschlägt.
|
Die folgenden Codebeispiele zeigen, wie diese Methode aufgerufen wird.
func uploadFile(for tableName: String, sysId: String, mimeType: String, encryptionContext: String?, data: Data, filename: String) async throws -> NowAttachmentMetadata {
let mimeType = MediaUtilities.mimeType(forFileName: filename)
let uploadConfig = NowAttachmentUploadConfiguration(tableName: tableName,
recordSysId: sysId,
fileName: filename,
contentType: mimeType,
encryptionContext: encryptionContext)
do {
let attachmentMetadata = try await attachmentService.upload(data: data, configuration: uploadConfig) { (_, _, _) in }
return attachmentMetadata
} catch {
// Handle NowDataError
throw error
}
}
Now AttachmentService – Upload(Daten: Daten, Konfiguration: NowAttachmentUploadConfiguration, progressUpdate: @Escape-FortschrittUpdate, Abschluss: @Escape-Zeichen (Result<NowAttachmentMetadata, NowDataError>))
Lädt die Anhangsdaten hoch und hängt sie an einen Datensatz in einer Tabelle an, wie in der Upload-Konfiguration angegeben.
Die Fortschrittsaktualisierung Rückruf bietet Informationen zum Upload-Fortschritt, die Sie dann verwenden können, um UI-Feedback bereitzustellen.
| Name | Typ | Beschreibung |
|---|---|---|
| Daten | Daten | Hochzuladender Anhang. |
| konfigurieren | Now AttachmentUpload-Konfiguration | Konfigurationsinformationen, die die Upload-Parameter für den Anhang definieren, z. B.:
|
| FortschrittsUpdate | @Escape-Statusaktualisierung | Fertigstellungs-Handler, der ausgeführt werden soll, nachdem der Anhang abgerufen wurde. Dies wird mehrmals aufgerufen, bis der Upload-Prozess abgeschlossen ist. Rückgabewerte für den Abschlusshandler: Fortschrittsaktualisierung: Gibt den aktuellen Fortschritt des Uploads zurück.
|
| Abschluss | @Escaping (Ergebnis< Now AttachmentMetadaten , Now DataError>) | Fertigstellungs-Handler, der nach dem Hochladen der Metadaten ausgeführt werden soll. Rückgabewerte für den Abschlusshandler:
|
| Typ | Beschreibung |
|---|---|
| Keine |
Das folgende Codebeispiel zeigt, wie diese Funktion aufgerufen wird.
typealias ProgressUpdate = (_ bytesWritten: Int64, _ totalBytesWritten: Int64, _ totalBytesExpectedToWrite: Int64) -> Void
let image = UIImage(named: "photo.png")
let data = image.pngData()
let recordSysId = "" // Sys_id of the record on the SN instance
let config = NowAttachmentUploadConfiguration(
tableName: "tableName",
recordSysId: recordSysId,
fileName: "photo.png",
contentType: "image/png",
encryptionContext: nil)
private func uploadFile(
data: Data,
config: NowAttachmentUploadConfiguration,
progress: @escaping ProgressUpdate) {
attachmentService.upload(data: data, configuration: config, progressUpdate: progress) { (result) in
DispatchQueue.main.async { [weak self] in
switch result {
case .success(let response)
do {
let data = try JSONEncoder().encode(response)
// Upload file successfully, return data
} catch
// Upload file decode failed, return error
}
case .failure(let error):
// Upload file failed, return NowDataError
}
}
}
Now AttachmentService – Upload(Daten: Daten, Konfiguration: NowAttachmentUploadConfiguration, progressUpdate: @Escape-FortschrittUpdate)
Lädt die Anhangsdaten hoch und hängt sie an einen Datensatz in einer Tabelle an, wie in der Upload-Konfiguration angegeben.
Die Fortschrittsaktualisierung Rückruf bietet Informationen zum Upload-Fortschritt, die Sie dann verwenden können, um UI-Feedback bereitzustellen.
| Name | Typ | Beschreibung |
|---|---|---|
| Daten | Daten | Hochzuladender Anhang. Die Datengröße und der Typ des Anhangs, den Sie hochladen können, werden von gesteuert ServiceNow Instanz. |
| konfigurieren | Now AttachmentUploadConfiguration | Konfigurationsinformationen, die die Upload-Parameter für den Anhang definieren, z. B.:
|
| FortschrittsUpdate | @Escape-Statusaktualisierung | Fertigstellungs-Handler, der ausgeführt werden soll, nachdem der Anhang abgerufen wurde. Rückgabewerte für den Abschlusshandler: Fortschrittsaktualisierung: Gibt den aktuellen Fortschritt des Uploads zurück. Dies wird mehrmals aufgerufen, bis der Upload-Prozess abgeschlossen ist.
|
| Typ | Beschreibung |
|---|---|
| AnyPublisher< NowAttachmentMetadata , NowDataError> | Erfolg: Now AttachmentMetadaten – Objekt, das die Metadaten für den angeforderten Anhang enthält. Fehler: Now DataError
|
Das folgende Codebeispiel zeigt, wie diese Funktion aufgerufen wird.
typealias ProgressUpdate = (_ bytesWritten: Int64, _ totalBytesWritten: Int64, _ totalBytesExpectedToWrite: Int64) -> Void
let image = UIImage(named: "photo.png")
let data = image.pngData()
let recordSysId = "" // Sys_id of the record on the SN instance
let config = NowAttachmentUploadConfiguration(
tableName: "tableName",
recordSysId: recordSysId,
fileName: "photo.png",
contentType: "image/png",
encryptionContext: nil)
private func uploadFile(data: Data,
config: NowAttachmentUploadConfiguration,
progress: @escaping ProgressUpdate) {
let publisher = attachmentService.upload(data: data, configuration: config, progressUpdate: progress)
publisher
.receive(on: DispatchQueue.main)
.encode(encoder: JSONEncoder())
.sink { [weak self] completion in
if case let .failure(error) = completion {
// Upload file failed, return NowDataError
}
} receiveValue: { [weak self] (data) in
// Upload file successfully, return data
}
.store(in: &subscriptions)
}