如何将视频作为文件从本地 URL (macOS) 复制到 NSPasteboard?

问题描述

我在文件夹中保存了一个 mp4 视频。
如何将视频从我的应用程序复制为文件,以便将其粘贴到 Telegram 或 Finder 等其他平台中以将其粘贴为新文件? 目前这是我编写的函数,但它仅将视频粘贴到 iMessage 文本字段中。

func copyVideo() {
    guard let url = TaskManager.shared.lastVideoURL else { return }
    do {
        let data = try Data(contentsOf: url)
        let pasteboard = NSPasteboard.general
        pasteboard.declareTypes([kUTTypeMPEG4 as NSPasteboard.PasteboardType],owner: nil)
        print(pasteboard.setData(data,forType: kUTTypeMPEG4 as NSPasteboard.PasteboardType))
    } catch {
        print("error getting data from video \(error)")
    }
}

我做错了什么?

解决方法

经过一些测试,我找到了解决方案
此方法将视频复制为文件:

func copyVideo() {      
    guard let url = TaskManager.shared.lastVideoURL else { return }
    if let fileRefURL = (url as NSURL).fileReferenceURL() as NSURL? {
        print(fileRefURL)
        let pasteboard = NSPasteboard.general
        pasteboard.clearContents()
        pasteboard.writeObjects([fileRefURL])
        pasteboard.setString(fileRefURL.relativeString,forType: .fileURL)
    }
}