0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

えーえすAdvent Calendar 2024

Day 12

SwiftUI×macOSで、選択したPCのファイルを編集する方法

Last updated at Posted at 2024-12-11

はじめに

macOSアプリでは、PCファイルを編集できる機能がとても大事になってきます。
そこで今回は、ユーザーが指定したファイルの中身を書き換える方法をまとめていきます。

ユーザーが指定したファイルを書き換える

今回は単純に.txtファイルの編集を行うとします。(設定を変更することで様々な形式のファイルを編集できるようになります)

まずはTARGET > Signing & Capabilities > App SandboxFile Accessで、User Selected FileRead/Writeにします。

スクリーンショット 2024-12-10 0.05.03.png

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("テキストを変更する")
        }
    }
}

実行すると以下のようなウィンドウが表示され、ファイルを選択できるようになります。

スクリーンショット 2024-12-10 0.03.02.png

選択できるファイルの設定方法

表示されるパネルが

  • 複数選択可能か
  • ディレクトリ(フォルダ)を選択可能か
  • ファイルを選択可能か
  • どのようなファイルが選択可能か(.pngなど拡張子も指定可能)

をここで設定します。

let panel = NSOpenPanel()
panel.allowsMultipleSelection = false
panel.canChooseDirectories = false
panel.canChooseFiles = true
panel.allowedContentTypes = [.plainText]

まとめ

macOSのアプリもみんな作っていきましょう!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?