在Finder中显示不在10.8中工作

时间:2013-01-06 01:06:51

标签: cocoa nsworkspace

这适用于10.7但不适用于10.8。我如何在山狮中使用它?

-(IBAction)showTargetInFinder:(id)sender
{

     NSString *linkPath = [targetField stringValue];
     NSWorkspace *ws = [NSWorkspace sharedWorkspace];
     [ws selectFile:linkPath inFileViewerRootedAtPath:nil];

}

2 个答案:

答案 0 :(得分:7)

请改用此代码:

NSURL *fileURL = your file URL;
NSArray *fileURLs = [NSArray arrayWithObjects:fileURL, nil];
[[NSWorkspace sharedWorkspace] activateFileViewerSelectingURLs:fileURLs];

这适用于10.6+。如果您想在Finder上显示并选择多个文件,只需在阵列中添加更多NSURLs,就可以了。

答案 1 :(得分:0)

从完整性检查的角度来看:如果运行进行[[NSWorkspace sharedWorkspace] activateFileViewerSelectingURLs:@[ fileURL ]]调用的进程的用户没有fileURL的读取/查看权限,那么该方法似乎“不起作用”

要确定这是否是您的问题(从OS X 10.10.3开始),请在控制台中查看以下日志:

6/18/15 10:34:46.195 AM NameOfApp[42753]: AppleEvents failed to encode extension for /var/folders/zz/zyxvpxvq6csfxvn_n0000000000000/T/xxxxxxxxxxx/yyyy.zzz, err=Permission denied/13