Скопируйте и сохраните файл из комплекта приложений на рабочий стол или в другое место - PullRequest
0 голосов
/ 23 апреля 2020

Я хочу сохранить MIDI-файл в определенную папку. Но, к сожалению, просто получить текстовый файл без названия.

Я нашел этот код, который я пробовал:

        let savePanel = NSSavePanel()

        let bundleFile = Bundle.main.url(forResource: "Melody", withExtension: "mid")!

        // this is a preferred method to get the desktop URL
        savePanel.directoryURL = FileManager.default.urls(for: .desktopDirectory, in: .userDomainMask).first!

        savePanel.message = "My custom message."
        savePanel.nameFieldStringValue = "MyFile"
        savePanel.showsHiddenFiles = false
        savePanel.showsTagField = false
        savePanel.canCreateDirectories = true
        savePanel.allowsOtherFileTypes = false
        savePanel.isExtensionHidden = false

        if let url = savePanel.url, savePanel.runModal() == NSApplication.ModalResponse.OK {
            print("Now copying", bundleFile.path, "to", url.path)
            // Do the actual copy:
            do {
             try FileManager().copyItem(at: bundleFile, to: url)
            } catch {
             print(error.localizedDescription)

        } else {
            print("canceled")
        }

Что можно улучшить, чтобы скопировать MIDI-файл из комплекта приложений, например, на рабочий стол ??

Спасибо !

1 Ответ

0 голосов
/ 23 апреля 2020

Просматривая какой-то старый код, который я написал, чтобы скопировать файл из комплекта приложения в местоположение на чьей-то Ма c, мне пришлось добавить имя файла в качестве дополнительного компонента пути к целевому URL, чтобы получить файл правильно копировать. Используя ваш пример кода, код будет выглядеть примерно так:

let name = "Melody.mid"
// url is the URL the user chose from the Save panel.
destinationURL = url.appendingPathComponent(name)
// Use destinationURL instead of url as the to: argument in FileManager.copyItem.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...