Cocoa 在10.8中显示查找器不工作

Cocoa 在10.8中显示查找器不工作,cocoa,nsworkspace,Cocoa,Nsworkspace,这在10.7中有效,但在10.8中不起作用。我怎样才能让它在“山狮”中发挥作用 -(IBAction)showTargetInFinder:(id)sender { NSString *linkPath = [targetField stringValue]; NSWorkspace *ws = [NSWorkspace sharedWorkspace]; [ws selectFile:linkPath inFileViewerRootedAtPath:nil];

这在10.7中有效,但在10.8中不起作用。我怎样才能让它在“山狮”中发挥作用

-(IBAction)showTargetInFinder:(id)sender
{

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

}
请改用此代码:

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

这适用于10.6+。如果您想在Finder上显示和选择多个文件,只需向数组中添加更多的
nsurl
,您就可以开始了。

从健全性检查的角度来看:如果用户运行使
[[NSWorkspace sharedWorkspace]激活的进程,则
call没有对
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

没问题!很高兴我能帮忙!或者,不要要求NSArray为您创建数组,而是使用数组文字:
[[NSWorkspace sharedWorkspace]ActivateFileViewer选择URL:@[fileURL]]
这在10.8.2上对我也不起作用。我知道路径是有效的,我可以验证。此语句不起任何作用:
[[NSWorkspace sharedWorkspace]ActivateFileUserSelectingUrls:@[[NSURL fileURLWithPath:self.myPath]]
您应该使用Pedro Vieira的解决方案,因为URL而不是路径通常是前进的方向,但另一件事需要尝试(如果只是出于好奇)将基于路径的方法与文件查看器根目录一起使用
@“
,而不是
nil
。是相当古老的,但要点是,
@“
是更有用的根值。