「fileMover」は、SwiftUIでファイルを移動するために便利なモディファイアです。
このモディファイアを使用すると、ユーザーがファイルを選択して移動先を指定し、ファイルを移動することができます。
以下では、この「fileMover」の使い方について解説します。
基本的な使い方
まず、fileMoverを使用するビューを作成します。
次に、ユーザーが移動したいファイルを選択し、移動先を指定するためのUI要素を用意します。
これらのUI要素にfileMoverモディファイアを適用することで、ファイルの移動を行います。
サンプルコード
import SwiftUI
struct FileMoverSmp: View {
@Binding var fileURL: URL?
@State private var isMoving = false
var body: some View {
VStack {
Button("ファイルの移動先を選択") {
isMoving = true
}
.fileMover(
isPresented: $isMoving,
file: fileURL,
onCompletion: { result in
// ファイルの移動が完了したときの処理
switch result {
case .success(let movedURL):
guard movedURL.startAccessingSecurityScopedResource() else {
return
}
print("File moved successfully to \(movedURL)")
movedURL.stopAccessingSecurityScopedResource()
case .failure(let error):
print("File move failed: \(error)")
}
},
onCancellation: {
print("cancel")
}
)
if let fileURL = fileURL {
Text("選択中のファイル: \(fileURL.lastPathComponent)")
}
}
}
}サンプルコードの動作
※今回はサンプルコードのためあらかじめファイルのURLを入力済みとします
View1においてファイルの移動先ボタンをタップすると、View2のブラウザが起動します。
保存したいディレクトリを選択して、View3の画面右上の”Move”ボタンをタップすると移動が完了します。



パラメータ
isPresented
- データ:
Binding<Bool> - 説明:ファイル移動ビューの表示状態を制御するためのバインディングです。
trueに設定すると、ファイル移動ビューが表示されます。
file
- データ:
URL - 説明:移動するファイルのURLを指定します。
onCompletion
- データ:
((Result<URL, Error>) -> Void) - 説明:移動が完了したときに実行されるクロージャーです。成功した場合は移動後のファイルのURLが、失敗した場合はエラーが渡されます。
onCancellation
- データ:
() -> Void - 説明:ユーザーがファイルの選択をキャンセルした場合に実行されるクロージャーを指定するためのものです。ユーザーがファイル選択ダイアログを閉じてファイルを選択せずにキャンセルした場合に、このクロージャーが呼び出されます。
注意点
- fileで指定したディレクトリが存在しない場合、動作しません
まとめ
以上が、「fileMover」の基本的な使い方とパラメータについての解説です。これを使うことで、ユーザーがファイルを簡単に移動できるようになります。

