为什么我可以在NSOpenPanel中选择别名而不是符号链接?

时间:2008-10-10 10:54:14

标签: cocoa macos

我想创建一个可以选择任何类型文件的NSOpenPanel,所以我这样做

NSOpenPanel*    panel = [NSOpenPanel openPanel];

if([panel runModalForTypes:nil] == NSOKButton) {
    // process files here
}

允许我选择除符号链接之外的所有文件 它们根本不可选择而且显而易见setResolvesAliases 什么都不做。

是什么给出了?

更新1:我做了一些测试,发现这种陌生感 存在于Leopard(10.5.5)但不存在于Tiger(10.4.8)中。

更新2:上面的代码可以选择mac别名(持久路径
 存在于资源分支中的数据,但不是符号链接(使用ln -s创建的文件)。

2 个答案:

答案 0 :(得分:1)

我无法重现这一点。我刚尝试过,它运行得很好。如果符号链接指向一个目录,它会在我选择符号链接时显示目录内容,如果符号链接指向一个文件,我也可以选择它。

当然,如果符号链接指向目录,则只能在选择目录时选择它

NSOpenPanel * panel = [NSOpenPanel openPanel];
[panel setCanChooseDirectories:YES];
if ([panel runModalForTypes:nil] == NSOKButton) {
    NSLog(@"%@", [panel filenames]);
}

答案 1 :(得分:0)

您的代码示例也适用于我 - 如果重要的话,我正在使用10.5.5和XCode 3.1。

如果别名是目录,我无法选择别名,因为它解析为它所指向的目录,而不是别名本身(默认情况下,面板似乎解析了别名)。不过,我能够为文件选择一个别名。