Cocoa 在10.8中显示查找器不工作
这在10.7中有效,但在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];
-(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
。是相当古老的,但要点是,@“
是更有用的根值。