2013-01-06 8 views
6

Questo funziona in 10.7 ma non in 10.8. Come faccio a farlo funzionare a Mountain Lion?Show in Finder che non funziona in 10.8

-(IBAction)showTargetInFinder:(id)sender 
{ 

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

} 
+0

si dovrebbe andare con la soluzione di Pedro Vieira, dal momento che gli URL invece di percorsi è la strada da seguire in generale, ma un'altra cosa da provare (se non altro per curiosità) sarebbe usare il metodo basato sul percorso con '@" "' per il root del visualizzatore di file, piuttosto che 'nil'. [La spiegazione della documentazione] (http://developer.apple.com/library/mac/documentation/Cocoa/Reference/ApplicationKit/Classes/NSWorkspace_Class/Reference/Reference.html#//apple_ref/occ/instm/NSWorkspace/selectFile: inFileViewerRootedAtPath :) è piuttosto arcaico, ma l'essenza è che '@" "' è il valore radice più utile. –

risposta

7

Usa questo codice invece:

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

Questo funziona su 10.6+. Se vuoi mostrare e selezionare più di un file su Finder basta aggiungere più NSURLs alla matrice e sei a posto.

+0

Freddo. Grazie, Pedro. – Paul

+0

Nessun problema! Felice di poterti aiutare! –

+2

In alternativa, invece di chiedere a NSArray di creare un array, utilizzare un letterale di array: '[[NSWorkspace sharedWorkspace] activateFileViewerSelectingURLs: @ [fileURL]]' –

0

Da un punto di vista dell'analisi di integrità: se l'utente che esegue il processo che effettua la chiamata [[NSWorkspace sharedWorkspace] activateFileViewerSelectingURLs:@[ fileURL ]] non dispone delle autorizzazioni di lettura/visualizzazione per fileURL, il metodo sembrerà "non funzionante".

per determinare se questo è il vostro problema (come di OS X 10.10.3), controllare la console per i registri come il seguente:

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