fileExporterは、SwiftUIでファイルのエクスポート機能を提供するためのモディファイアです。
ユーザーがファイルを選択して保存するためのシステムのファイルエクスポーターを表示できます。
以下に、fileExporterの使い方を説明します。

ファイル操作で扱うデータモデルの準備
まずは今回のエクスポートで対象とするデータモデルを準備しましょう。
インポート機能と同様のデータモデルです。以下の記事で紹介しているデータを使用します。
サンプルプログラム
実際にはインポートとエクスポートの機能はセットで使用することが多いと思いますが、説明を単純にするため、エクスポートにのみ絞って説明します。
まず、fileExporterを使用するビューを作成し、ファイルの内容の入力や、ボタンなどのUI要素を配置します。
このボタンをタップすると、ファイル保存用のシステムダイアログが表示されます。
import SwiftUI
struct FileExporterSmp: View {
@State private var text = ""
@State private var exportFile: Bool = false
var body: some View {
TextField("ファイルの内容", text: $text)
//エクスポートボタン
Button("Export File") {
// ファイルをエクスポートするロジックを実装する
exportFile = true
}
.fileExporter(
isPresented: $exportFile,
document: SmpFileDocument(text: text),
contentTypes: [.plainText],
defaultFilename: "DefaultName"
) { result in
// エクスポートの完了時に実行されるコードを定義する
switch result {
case .success:
print("Export success")
case .failure:
print("Export failed")
}
}
onCancellation: {
print("cancel success")
}
}
}Export Fileボタンをタップすると、ファイルブラウザが開きます。
“ファイル名”を入力して画面右上のMoveボタンをタップするとファイルが保存されます。
また、保存されたファイルは別の記事で紹介するインポート機能などで読み込むことも可能です。


プログラムの解説
fileExporterのパラメータ
isPresented:ビューの表示状態を制御するブール値を提供します。trueに設定すると、ファイル選択用のダイアログが表示されます。- document:エクスポートするドキュメントを表す
FileDocumentプロトコルに準拠したオブジェクトです。このドキュメントには、エクスポートしたいデータが含まれています。 - contentTypes:エクスポートされるファイルのコンテンツタイプを指定します。例えば、
.textや.jpegなどのUTTypeを指定できます。 - defaultFilename:エクスポート時のデフォルトのファイル名
- onCompletion:エクスポートが完了したときに実行されるクロージャーです。エクスポートが成功した場合は、
ResultにエクスポートされたファイルのURLが含まれます。エクスポートに失敗した場合は、エラーが渡されます。 - onCancellation:ユーザーがファイルの選択をキャンセルした場合に実行されるクロージャーを指定するためのものです。ユーザーがファイル選択ダイアログを閉じてファイルを選択せずにキャンセルした場合に、このクロージャーが呼び出されます。
まとめ
以上が、fileExporterの基本的な使い方とパラメータに関する解説です。このモディファイアを使用することで、ユーザーがファイル形式でデータをエクスポートするためのシンプルなインターフェースを提供することができます。


