2008-10-10 39 views
0

我想創建一個NSOpenPanel,可以選擇任何類型的文件,所以我這樣做爲什麼我可以在NSOpenPanel中選擇別名而不是符號鏈接?

NSOpenPanel* panel = [NSOpenPanel openPanel]; 

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

,它可以讓我選擇所有文件除了符號鏈接。
他們根本不可選,明顯的setResolvesAliases
什麼都不做。

什麼給?

更新1:我做了一些更多的測試,發現這個陌生
是豹(10.5.5)存在,但不是在虎(10.4.8)。

更新2:上面的代碼可以選擇MAC別名(永久路徑
數據,生活在資源派生),但不是符號鏈接(LN與-s創建的文件)。

回答

1

我無法重現這一點。我只是試了一下,它工作得很好。如果符號鏈接指向一個目錄,它將在選擇符號鏈接時顯示目錄內容,如果符號鏈接指向一個文件,我也可以選擇它。

當然,如果符號鏈接指向一個目錄,你可以僅允許選擇目錄中選擇

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

如果我添加行`[panel setCanChooseDirectories:YES];`,那麼我可以選擇符號鏈接,但我也可以選擇我不想要的目錄。奇怪的是,它適合你。你沒有運行Leopard我接受它。 – 2008-10-10 16:15:17

0

您的代碼示例爲我工作,以及 - 我使用10.5.5和XCode的3.1,如果它很重要。

如果別名是一個目錄,我無法選擇別名,因爲它解析爲它指向的目錄,而不是別名本身(面板似乎默認解析別名)。不過,我可以選擇文件的別名。

+0

這是我的確切設置。因此,對於我的示例,您可以選擇一個文件的別名,然後單擊打開按鈕? – 2008-10-11 14:58:15