Os arquivos escolhidos são movidos para o diretório temporário do app para sobreviver à limpeza do sistema. Também declaro tipos de conteúdo para vídeo e imagem para obter o arquivo original sem transcodificação lenta.
struct PhotoFile: Transferable {
let url: URL
/// Move para o diretório temporário para sobreviver à limpeza do sistema.
private static func importFile(from received: ReceivedTransferredFile) throws -> PhotoFile {
let fileName = received.file.lastPathComponent
let destURL = FileManager.default.temporaryDirectory.appending(path: fileName)
if FileManager.default.fileExists(atPath: destURL.path) {
try? FileManager.default.removeItem(at: destURL)
}
// Mover é instantâneo no mesmo sistema de arquivos.
try FileManager.default.moveItem(at: received.file, to: destURL)
return PhotoFile(url: destURL)
}
static var transferRepresentation: some TransferRepresentation {
// Declara tipos específicos para obter o arquivo original.
// O tipo genérico `.item` causaria uma transcodificação lenta (HEVC → H.264).
FileRepresentation(contentType: .movie) { SentTransferredFile($0.url) }
importing: { try importFile(from: $0) }
FileRepresentation(contentType: .image) { SentTransferredFile($0.url) }
importing: { try importFile(from: $0) }
}
}






