在OS X中从剪贴板获取文件路径

3

我希望我的应用程序可以在复制文件到剪贴板之前获取完整的文件路径。

我尝试了以下代码:

NSPasteboard *p = [NSPasteboard generalPasteboard];
NSDictionary *options = [NSDictionary dictionary];
NSString *path = [[p readObjectsForClasses:[NSArray arrayWithObjects:[NSString class], nil] options:options] objectAtIndex:0];

这只返回文件名,而不是路径。

你能帮我吗?


1
顺便提一下,它被称为Xcode,但对于这个问题来说并不相关。 - Matthias Bauch
1个回答

10

试试这个:

NSPasteboard *pasteboard = [NSPasteboard generalPasteboard];
NSArray *classes = [NSArray arrayWithObject:[NSURL class]];

NSDictionary *options = [NSDictionary dictionaryWithObject:
                         [NSNumber numberWithBool:YES] forKey:NSPasteboardURLReadingFileURLsOnlyKey];

NSArray *fileURLs =
[pasteboard readObjectsForClasses:classes options:options];

这正是来自苹果的 Pasteboard编程指南


事实上,每当您有选择时,现代代码中应优先使用文件URL而不是路径名。 - Peter Hosey
但我需要路径,而不是文件URL...这可能吗? - Oskar
еңЁиҺ·еҸ–еҲ°NSURLеҜ№иұЎеҗҺпјҢи°ғз”Ё-pathж–№жі•гҖӮ - Ken Thomases
@Oskar:你确定你需要路径吗?在Cocoa中,几乎所有的方法都可以接受URL。如果我对此过于执着,请原谅;很多人在不必要使用路径时会使用它们。 - Peter Hosey
我用文件URL尝试过,但它不起作用。我需要它用于上传组件(ASIHTTPRequest)。 - Oskar
我该如何在脚本语言中实现这个(applescript、bash、python等)? - HappyFace

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接