For these actions, you can use the UIDocumentPickerViewController
or UIDocumentBrowserViewController
controllers. Here is a quick example of using a UIDocumentPickerViewController
to allow the user to export JSON data to disk.
Note, in order for this to work, you need to have the "User Selected File" permission in the macOS sandbox set to Read
or Read/Write
depending on your use case.
func exportJSONData(_ data: Data) {
let filename = \"Export.json\"
// Get a path in our document directory to temporarily store the data in
guard let exportURL = FileManager.default
.urls(for: .documentDirectory, in: .userDomainMask)
.first?.appendingPathComponent(filename) else { return }
// Write the data out into the file
try? data.write(to: exportURL)
// Present the save controller. We've set it to `exportToService` in order
// to export the data
let controller = UIDocumentPickerViewController(url: filePath, in: UIDocumentPickerMode.exportToService)
present(controller, animated: true) {
// Once we're done, delete the temporary file
try? FileManager.default.removeItem(at: filePath)
}
}
Similarly, for importing data, you would use .import
as in:
let controller = UIDocumentPickerViewController(url: filePath, in: .import)