Как скопировать элемент в буфер обмена с помощью Swift на MacOS - PullRequest
0 голосов
/ 25 апреля 2020

Я хочу выполнить операции копирования / вставки с помощью Swift с аудиоклипами на MacOS. Это можно сделать с помощью Finder, щелкнув правой кнопкой мыши аудиоклип, выбрав «Копировать», а затем вставив его.

В настоящее время, когда аудиофайл копируется, он отправляется в стандартный системный буфер обмена, к которому можно получить доступ через Finder> Правка> Показать буфер обмена. При просмотре буфера обмена я вижу заголовок аудиофайла (не пути) в основном поле буфера обмена и нижний колонтитул с надписью «Содержимое буфера обмена: текст / элементы» внизу.

Я хочу скопировать это Поведение со Swift, поэтому я считаю, что я должен использовать экземпляр NSPasteboard.general, поскольку это позволит мне изменить содержимое буфера обмена.

Это то, что я имею до сих пор, когда дело доходит до копирования элемента в буфер обмена:

let pasteboard = NSPasteboard.general
pasteboard.clearContents()
pasteboard.setString(audioPath.absoluteString, forType: .URL)

Однако это приводит к пустому основному полю буфера обмена и отображению нижнего колонтитула " Содержимое буфера обмена: неизвестно ".

Я также пытался сделать:

let audio = try Data(contentsOf: path)
let pasteboard = NSPasteboard.general
pasteboard.clearContents()
pasteboard.setData(audio, forType: .sound)

Но в буфере обмена было бы то же сообщение.

Как можно программно воссоздать способность Finder копировать / вставлять, используя Swift?

...