// // VehiclesArchive.swift // AutoCatCore // // Created by Selim Mustafaev on 19.01.2025. // Copyright © 2025 Selim Mustafaev. All rights reserved. // import SwiftUI public enum VehiclesArchiveError: LocalizedError { case filedCreateCsv public var errorDescription: String? { switch self { case .filedCreateCsv: "Failed to create csv data for vehicles" } } } public final class VehiclesArchive { let vehicles: [VehicleDto] public init(vehiles: [VehicleDto]) { self.vehicles = vehiles } func makeCsvString() throws -> String { var result = "" let newLine: Character = "\r\n" result.append(VehicleDto.csvHeader) result.append(newLine) for vehicle in vehicles { result.append(vehicle.csvLine) result.append(newLine) } return result } } extension VehiclesArchive: Transferable { public static var fileName: String { "autocat.csv" } public static var transferRepresentation: some TransferRepresentation { DataRepresentation(exportedContentType: .commaSeparatedText) { archive in let csvString = try archive.makeCsvString() if let data = csvString.data(using: .utf8){ return data } else { throw VehiclesArchiveError.filedCreateCsv } } .suggestedFileName(fileName) } }