2013-01-06 12 views
6

Działa w 10.7, ale nie w 10.8. Jak mogę to wykorzystać w Mountain Lion?Pokaż w Finderze nie działa w 10.8

-(IBAction)showTargetInFinder:(id)sender 
{ 

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

} 
+0

należy udać się z roztworu Pedro Vieira, ponieważ adresy URL zamiast ścieżek jest ogólnie rzecz biorąc, ale inną rzeczą do wypróbowania (choćby ze względu na ciekawość) byłoby użycie metody opartej na ścieżce z '@" "' dla root przeglądarki plików zamiast 'nil'. [Objaśnienie dokumentacji] (http://developer.apple.com/library/mac/documentation/Cocoa/Reference/ApplicationKit/Classes/NSWorkspace_Class/Reference/Reference.html#//apple_ref/occ/instm/NSWorkspace/selectFile: inFileViewerRootedAtPath :) jest raczej archaiczny, ale najważniejszym jest to, że '@" "' jest bardziej użyteczną wartością root. –

Odpowiedz

7

Użyj tego kodu:

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

Działa to na 10.6+. Jeśli chcesz pokazać i wybrać więcej niż jeden plik w Finderze, po prostu dodaj więcej do tablicy NSURLs i już możesz iść.

+0

Cool. Dzięki, Pedro. – Paul

+0

Nie ma problemu! Cieszę się, że mogłem pomóc! –

+2

Zamiast pytać NSArray, aby utworzyć dla ciebie tablicę, użyj literału tablicowego: '[[NSWorkspace sharedWorkspace] activateFileViewerSelectingURLs: @ [fileURL]]' –

0

Z punktu widzenia kontroli poprawności: jeśli użytkownik uruchamiający proces, który powoduje, że wywołanie [[NSWorkspace sharedWorkspace] activateFileViewerSelectingURLs:@[ fileURL ]] nie ma uprawnień do odczytu/oglądania dla fileURL, wówczas metoda wyświetli się "nie działa".

Aby ustalić, czy jest to Twój problem (dzień OS X 10.10.3), sprawdzić swoją konsolę do kłód tak:

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