はじめに
macOSアプリでは、PCファイルを編集できる機能がとても大事になってきます。
そこで今回は、ユーザーが指定したファイルの中身を書き換える方法をまとめていきます。
ユーザーが指定したファイルを書き換える
今回は単純に.txt
ファイルの編集を行うとします。(設定を変更することで様々な形式のファイルを編集できるようになります)
まずはTARGET > Signing & Capabilities > App Sandbox
のFile Access
で、User Selected File
をRead/Write
にします。
import SwiftUI
import AppKit
struct ContentView: View {
let text = "hello, world"
var body: some View {
Button {
let panel = NSOpenPanel()
panel.allowsMultipleSelection = false
panel.canChooseDirectories = false
panel.canChooseFiles = true
panel.allowedContentTypes = [.plainText]
panel.begin { response in
if response == .OK {
guard let fileURL = panel.url else { return }
do {
try text.write(to: fileURL, atomically: true, encoding: .utf8)
} catch {
print(error.localizedDescription)
}
}
}
} label: {
Text("テキストを変更する")
}
}
}
実行すると以下のようなウィンドウが表示され、ファイルを選択できるようになります。
選択できるファイルの設定方法
表示されるパネルが
- 複数選択可能か
- ディレクトリ(フォルダ)を選択可能か
- ファイルを選択可能か
- どのようなファイルが選択可能か(
.png
など拡張子も指定可能)
をここで設定します。
let panel = NSOpenPanel()
panel.allowsMultipleSelection = false
panel.canChooseDirectories = false
panel.canChooseFiles = true
panel.allowedContentTypes = [.plainText]
まとめ
macOSのアプリもみんな作っていきましょう!