示例路径:
/用户/麦克/桌面/媒体
我创建了一个指向“媒体”文件夹的符号链接,并将其命名为“我的媒体”。
所有人都退房了。现在我想显示我的媒体文件夹的内容,以确认成功创建符号链接。
“targetField”textBox显示正确的路径字符串,其符号链接为lastPathComponent:
/ Users / Mike / Desktop / My Media
在Mavericks之前,以下代码将在Finder窗口中显示符号链接文件夹的内容:
NSString *path = [targetField stringValue];
NSURL *fileURL = [NSURL fileURLWithPath:path];
NSArray *fileURLs = [NSArray arrayWithObjects:fileURL, nil];
[[NSWorkspace sharedWorkspace] activateFileViewerSelectingURLs:fileURLs];
在Mavericks中,代码现在打开原始Target文件夹,而不是Symbolic Link文件夹。我从技术上认识到两个文件夹的内容是一样的。但关键是代码不再将符号链接反映为新路径中的最后一个组件。它将恢复到目标文件夹(媒体)并改为打开它。
我的描述有意义吗?有没有办法使这项工作像在小牛队之前那样工作?
感谢。
答案 0 :(得分:0)
您的描述对我来说并不完全合理。 “从技术上讲,两个文件夹的内容是相同的”没有意义,如果你有一个文件夹的符号链接,你只有一个文件夹,而不是两个具有相同内容的文件夹。所以我不确定你在问什么,但这是一个猜测:
在Mountain Lion下运行代码会打开一个Finder窗口,显示桌面并突出显示“我的媒体”。要打开同一窗口,但没有突出显示,您可以在路径的父文件夹上使用openURL:
或openFile:
。例如。使用网址:
NSURL *fileURL = [NSURL fileURLWithPath:path.stringByDeletingLastPathComponent];
[NSWorkspace.sharedWorkspace openURL:fileURL];
或只是字符串:
[NSWorkspace.sharedWorkspace openFile:path.stringByDeletingLastPathComponent];
<强>附录强>
澄清之后,我认为你所追求的是:
[NSWorkspace.sharedWorkspace selectFile:path
inFileViewerRootedAtPath:path.stringByDeletingLastPathComponent];
方法selectFile:inFileViewerRootedAtPath:
定义为不遵循符号链接。在Mavericks下,这突出了链接本身。
HTH