OSX-使用沙盒应用程序通过拖放从FileURL获取文件路径

时间:2019-04-21 00:34:26

标签: objective-c macos drag-and-drop sandbox

我正在使用拖放操作将文件拖放到我的APP上。

Apple在OSX 10.14中弃用了NSFilenamesPboardType,并建议使用NSPasteboardTypeFileURL。

我得到的URL(字符串)是:

  

file:///..file/id=6571367.2682325

如何从该URL获取实际文件路径? 我需要文件名和类型信息。 我还可以使用完整文件路径访问文件吗?我假设它已添加到我的沙箱中。

2 个答案:

答案 0 :(得分:0)

我使用以下方法找到了解决方案:

NSURL * url = [NSURL initWithString:urlString];
NSString * path = [url fileSystemRepresentation];

是的,可以从我的沙盒应用程序访问该文件。

答案 1 :(得分:0)

我正在使用Xcode 10.2在Mac OS 10.14中工作。

我在performDragOperation中得到了两种解决方案(都带有NSPasteboardTypeFileURL的registerForDraggedTypes。然后):

    上面提到的
  1. [[[NSURL URLWithString:relativePath] fileSystemRepresentation];

  2. init pasteBoard

    NSString * fileURL = [[NSURL URLFromPasteboard:pasteBoard]路径];