SwiftUI: export multiple images with .fileExporter

Goal:
export multiple images with .fileExporter

What I did:
Code 1 bellow works fine for MacOS, export multiple files.

Problem:
When I replace for UIImage, it exports only 1 image

Question:
How can I export multiple images using .fileExporter in iOS?



Code 1 bellow works fine for MacOS, export multiple files.

Code Block
import SwiftUI
class AppContext: ObservableObject {
    @Published var fileSaveDialogShown = false
}
@main
struct FocalApp: App {
  @StateObject var appContext = AppContext()
  var body: some Scene {
    WindowGroup {
      ContentView()
        .environmentObject(self.appContext)
        .fileExporter(
          isPresented: $appContext.fileSaveDialogShown,
          documents: [
            ImageDocument(image: NSImage(named: "1")),
            ImageDocument(image: NSImage(named: "2"))
          ],
          contentType: .jpeg // Match this to your representation in ImageDocument
        ) { url in
          print("Saved to", url) // [URL]
        }
    }
  }
}
import SwiftUI
import UniformTypeIdentifiers
struct ImageDocument: FileDocument {
  static var readableContentTypes: [UTType] { [.jpeg, .png, .tiff] }
  var image: NSImage
  init(image: NSImage?) {
    self.image = image ?? NSImage()
  }
  init(configuration: ReadConfiguration) throws {
    guard let data = configuration.file.regularFileContents,
          let image = NSImage(data: data)
    else {
      throw CocoaError(.fileReadCorruptFile)
    }
    self.image = image
  }
  func fileWrapper(configuration: WriteConfiguration) throws -> FileWrapper {
    // You can replace tiff representation with what you want to export
    return FileWrapper(regularFileWithContents: image.tiffRepresentation!)
  }
}
struct ContentView: View {
    
    @EnvironmentObject var appContext: AppContext
    
    var body: some View {
        VStack {
            Button(action: {
                appContext.fileSaveDialogShown.toggle()
            }, label: {
                Text("Button")
            })
        }
        .frame(width: 200, height: 200)
    }
}


When I replace for UIImage, it exports only 1 image

Code Block
import SwiftUI
class AppContext: ObservableObject {
    @Published var fileSaveDialogShown = false
}
@main
struct FocalApp: App {
  @StateObject var appContext = AppContext()
  var body: some Scene {
    WindowGroup {
      ContentView()
        .environmentObject(self.appContext)
        .fileExporter(
          isPresented: $appContext.fileSaveDialogShown,
          documents: [
            ImageDocument(image: UIImage(named: "1")),
            ImageDocument(image: UIImage(named: "2"))
          ],
          contentType: .jpeg // Match this to your representation in ImageDocument
        ) { url in
          print("Saved to", url) // [URL]
        }
    }
  }
}
import SwiftUI
import UniformTypeIdentifiers
struct ImageDocument: FileDocument {
  static var readableContentTypes: [UTType] { [.jpeg, .png, .tiff] }
  var image: UIImage
  init(image: UIImage?) {
    self.image = image ?? UIImage()
  }
  init(configuration: ReadConfiguration) throws {
    guard let data = configuration.file.regularFileContents,
          let image = UIImage(data: data)
    else {
      throw CocoaError(.fileReadCorruptFile)
    }
    self.image = image
  }
  func fileWrapper(configuration: WriteConfiguration) throws -> FileWrapper {
    // You can replace tiff representation with what you want to export
    return FileWrapper(regularFileWithContents: image.jpegData(compressionQuality: 1)!)
  }
}
struct ContentView: View {
    
    @EnvironmentObject var appContext: AppContext
    
    var body: some View {
        VStack {
            Button(action: {
                appContext.fileSaveDialogShown.toggle()
            }, label: {
                Text("Button")
            })
        }
        .frame(width: 200, height: 200)
    }
}

SwiftUI: export multiple images with .fileExporter
 
 
Q