Как получить ссылку ShareLink, которая загружает URL-адрес файла для совместного использования только при необходимостиIOS

Программируем под IOS
Anonymous
Как получить ссылку ShareLink, которая загружает URL-адрес файла для совместного использования только при необходимости

Сообщение Anonymous »

У меня есть метод, который объединяет кучу вещей в zip-файл для совместного использования. Я хочу показать это в SwiftUI, но если я сделаю это так:

Код: Выделить всё

 ShareLink(item: zipUpUsefulThings()
Я расточительно использую операции ввода-вывода для архивирования вещей в папку, когда они не нужны. Я мог бы использовать собственный Transferable иgenerateReport, чтобы отложить вычисления до тех пор, пока они не будут фактически переданы в общий доступ, но это работает только для строк. Если я помещаю URL-адрес в элемент общего доступа, он вычисляется немедленно.
Вот код

Код: Выделить всё

ShareLink(item: ZipLog(), preview: .init("Subscription Debug Log")) {
Label("Share DebugFiles", systemImage: "square.and.arrow.up")
}.controlSize(.regular).buttonStyle(.borderedProminent)

struct DebugLogShare: Transferable {
func generateLogs() -> URL {
return Debug.createZipOfLogs()!
}

static var transferRepresentation: some TransferRepresentation {
ProxyRepresentation { report in
generateLogs()
}
}
}
В этом примере Debug.createZipOfLogs вызывается в тот момент, когда кнопка «Поделиться» прокручивается в поле зрения, и снова, когда пользователь нажимает «Поделиться». Это нежелательно.
Есть ли способ избежать этого и создать общий элемент, который вычисляет свой URL-адрес только в самый последний момент?

Подробнее здесь: https://stackoverflow.com/questions/787 ... hen-needed

Вернуться в «IOS»