使用 NSPasteboardItem 时,NSOutlineView 与安全范围 URL 的拖放失败

Rem*_*tra 5 macos nsoutlineview nstableview swift

我有一个NSOutlineView包含 URL 作为项目的项目。这些 URL 属于安全范围,我希望它们能够被拖动到其他应用程序。

当我只返回 URL(项目)时,func outlineView(_ outlineView: NSOutlineView, pasteboardWriterForItem item: Any) -> NSPasteboardWriting?一切正常。但对于本地拖放(行重新排序),我需要其他信息,因此我创建一个NSPasteboardItem()来保存数据:

func outlineView(_ outlineView: NSOutlineView, pasteboardWriterForItem item: Any) -> NSPasteboardWriting? {
    let pasteboardItem=NSPasteboardItem()
    let itemURL = item as! NSURL

    //Write the absolute URL for d'n'd to other apps or windows
    pasteboardItem.setPropertyList(itemURL.pasteboardPropertyList(forType: .fileURL)!, forType: .fileURL)

    //Write data for local d'n'd.
    pasteboardItem.setPropertyList(<data>, forType: dragDropImageURLType)

    return pasteboardItem
}
Run Code Online (Sandbox Code Playgroud)

当我使用此代码时,出现以下错误,并且放置失败:

[一般] 风格 public.file-url 立即需要沙箱扩展数据,但无法获取。

如何确保写入 URL 的方式NSPasteboardItem与直接返回 URL 的方式相同?