2013-01-06 19 views
6

這適用於10.7,但不適用於10.8。我如何才能在山獅工作?在Finder中顯示不在10.8中工作

-(IBAction)showTargetInFinder:(id)sender 
{ 

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

} 
+0

你應該和佩德羅維埃拉的解決方案去,因爲網址,而不是路徑是一般情況下,但另一件嘗試(如果只是爲了好奇),將使用基於路徑的方法,用'@「」'作爲文件查看器根目錄,而不是'nil'。 [文檔的解釋](http://developer.apple.com/library/mac/documentation/Cocoa/Reference/ApplicationKit/Classes/NSWorkspace_Class/Reference/Reference.html#//apple_ref/occ/instm/NSWorkspace/selectFile: inFileViewerRootedAtPath :)比較陳舊,但要點是'@「」'是更有用的根值。 –

回答

7

使用此代碼來代替:

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

這適用於10.6以上版本。如果您想在Finder上顯示並選擇多個文件,只需將更多的NSURLs添加到陣列中即可。

+0

很酷。謝謝,佩德羅。 – Paul

+0

沒問題!很高興我能幫上忙! –

+2

或者,不要讓NSArray爲你創建一個數組,而是使用一個數組literal:[[[NSWorkspace sharedWorkspace] activateFileViewerSelectingURLs:@ [fileURL]]' –

0

從理智檢查的角度來看:如果運行調用[[NSWorkspace sharedWorkspace] activateFileViewerSelectingURLs:@[ fileURL ]]的流程的用戶沒有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 
相關問題